部分翻包拣货
							parent
							
								
									198bcba6ba
								
							
						
					
					
						commit
						bf4d837e39
					
				| 
						 | 
				
			
			@ -22,4 +22,7 @@ public class FbPick {
 | 
			
		|||
 | 
			
		||||
    @ApiModelProperty(value = "目标托盘")
 | 
			
		||||
    String dstStockCode;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "实拣数量")
 | 
			
		||||
     Double moveQty;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ public class BydAppController {
 | 
			
		|||
            Long taskId = fbPick.getTaskId();//任务id
 | 
			
		||||
            String orderNumber = fbPick.getDstOrderNumber();//箱号
 | 
			
		||||
            String dstStockCode = fbPick.getDstStockCode();//目标托盘
 | 
			
		||||
            bydAppService.fbPicking(taskId, orderNumber, dstStockCode);
 | 
			
		||||
            bydAppService.fbPicking(taskId, orderNumber, dstStockCode,fbPick.getMoveQty());
 | 
			
		||||
            return successResponse("拣货成功", null);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            return badRequest("拣货失败:" + e.getMessage());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ public interface BydAppService {
 | 
			
		|||
     * @param orderNumber 箱号
 | 
			
		||||
     * @param dstStockCode 目标托盘
 | 
			
		||||
     */
 | 
			
		||||
    void fbPicking(Long taskId, String orderNumber, String dstStockCode);
 | 
			
		||||
    void fbPicking(Long taskId, String orderNumber, String dstStockCode ,Double moveQty);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 解绑容器
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -194,15 +194,15 @@ public class BydAppServiceImpl implements BydAppService {
 | 
			
		|||
        returnTaskVo.setItemName(task.getItem().getName());
 | 
			
		||||
        returnTaskVo.setSrcPointCode(task.getSrcPointCode());
 | 
			
		||||
        returnTaskVo.setDstPointCode(task.getDstPointCode());
 | 
			
		||||
        returnTaskVo.setPlanQty(task.getPlanQty());
 | 
			
		||||
        returnTaskVo.setPlanQty(task.getPlanQty()-task.getMoveQty());
 | 
			
		||||
        return returnTaskVo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void fbPicking(Long taskId, String orderNumber, String dstStockCode) {
 | 
			
		||||
    public void fbPicking(Long taskId, String orderNumber, String dstStockCode,Double moveQty) {
 | 
			
		||||
        //验证任务
 | 
			
		||||
        Task task = validateTask(taskId, orderNumber);
 | 
			
		||||
        Task task = validateTask(taskId, orderNumber,moveQty);
 | 
			
		||||
 | 
			
		||||
        //工单
 | 
			
		||||
        Pick pick = task.getPickDetail().getPick();
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +211,7 @@ public class BydAppServiceImpl implements BydAppService {
 | 
			
		|||
        Stock dstStock = validatedstStock(task, pick, dstStockCode);
 | 
			
		||||
 | 
			
		||||
        //库存移位
 | 
			
		||||
        taskService.moveInventory(task, dstStock, task.getPlanQty());
 | 
			
		||||
        taskService.moveInventory(task, dstStock, moveQty);
 | 
			
		||||
 | 
			
		||||
        //刷新出库单状态
 | 
			
		||||
        pickService.refreshPickStatus(task.getPickDetail().getPick());
 | 
			
		||||
| 
						 | 
				
			
			@ -392,11 +392,14 @@ public class BydAppServiceImpl implements BydAppService {
 | 
			
		|||
     * @param taskId      任务Id
 | 
			
		||||
     * @param orderNumber 箱号
 | 
			
		||||
     */
 | 
			
		||||
    private Task validateTask(Long taskId, String orderNumber) {
 | 
			
		||||
    private Task validateTask(Long taskId, String orderNumber,Double moveQty) {
 | 
			
		||||
        Task task = taskService.findById(taskId);
 | 
			
		||||
        if (task == null) {
 | 
			
		||||
            throw new BadRequestException("未找到相应任务记录!");
 | 
			
		||||
        }
 | 
			
		||||
        if(moveQty>task.getPlanQty()-task.getMoveQty()){
 | 
			
		||||
            throw new BadRequestException("实际拣货数量不能大于待拣货数量!");
 | 
			
		||||
        }
 | 
			
		||||
        if (orderNumber.equals(task.getItemKey().getOrderNumber())) {
 | 
			
		||||
            return task;
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,7 @@ import javax.persistence.*;
 | 
			
		|||
import javax.validation.constraints.*;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author huojin
 | 
			
		||||
| 
						 | 
				
			
			@ -80,10 +81,10 @@ public class Pick extends BaseEntity implements Serializable {
 | 
			
		|||
    @ApiModelProperty(value = "备料点位")
 | 
			
		||||
    private Point point;
 | 
			
		||||
 | 
			
		||||
    @OneToOne
 | 
			
		||||
    @JoinColumn(name = "`call_point_id`")
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`call_point_id`")
 | 
			
		||||
    @ApiModelProperty(value = "叫料点位")
 | 
			
		||||
    private Point callPoint;
 | 
			
		||||
    private String callPoint;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`is_call`")
 | 
			
		||||
    @ApiModelProperty(value = "是否叫料")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,9 +149,13 @@ public class Task extends BaseEntity implements Serializable {
 | 
			
		|||
    private String putCode;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "inv_id")
 | 
			
		||||
    @ApiModelProperty(value = "库存ID")
 | 
			
		||||
    @ApiModelProperty(value = "原库存ID")
 | 
			
		||||
    private Long invId;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "new_inv_id")
 | 
			
		||||
    @ApiModelProperty(value = "新库存ID")
 | 
			
		||||
    private Long newInvId;
 | 
			
		||||
 | 
			
		||||
    @OneToOne
 | 
			
		||||
    @JoinColumn(name = "dept_id")
 | 
			
		||||
    @ApiModelProperty(value = "仓库ID")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
 | 
			
		|||
     *
 | 
			
		||||
     * @param pickId 出库单ID
 | 
			
		||||
     */
 | 
			
		||||
    @Query("from Task t where t.pickDetail.pick.id =:pickId and t.planQty > t.moveQty")
 | 
			
		||||
    @Query("from Task t where t.pickDetail.pick.id =:pickId and t.planQty > t.moveQty and t.agvTask.id is null")
 | 
			
		||||
    List<Task> findByPickNotAllTask(Long pickId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ public interface TaskRepository extends JpaRepository<Task, Long>, JpaSpecificat
 | 
			
		|||
     *
 | 
			
		||||
     * @param pickId 出库单ID
 | 
			
		||||
     */
 | 
			
		||||
    @Query("from Task t where t.pickDetail.pick.id =:pickId and t.planQty = t.moveQty")
 | 
			
		||||
    @Query("from Task t where t.pickDetail.pick.id =:pickId and t.planQty - t.moveQty>0  ")
 | 
			
		||||
    List<Task> findByPickAllTask(Long pickId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ public class PickDto implements Serializable {
 | 
			
		|||
    /**
 | 
			
		||||
     * 叫点位
 | 
			
		||||
     */
 | 
			
		||||
    private Point callPoint;
 | 
			
		||||
    private String callPoint;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 单据类型
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -653,7 +653,7 @@ public class KMReServiceImpl implements KMReService {
 | 
			
		|||
 | 
			
		||||
        List<Task> taskList = taskService.findTaskByCallAgvTask(agvTask.getId());
 | 
			
		||||
        for (Task task : taskList) {
 | 
			
		||||
            inventoryService.deleteAll(new Long[]{task.getInvId()});
 | 
			
		||||
            inventoryService.deleteAll(new Long[]{task.getNewInvId()});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //点位占用
 | 
			
		||||
| 
						 | 
				
			
			@ -663,10 +663,7 @@ public class KMReServiceImpl implements KMReService {
 | 
			
		|||
        stockService.usedStock(stock, endPoint, BaseStatus.USED);
 | 
			
		||||
 | 
			
		||||
        Pick pick = pickService.findByPickCode(agvTask.getLineSlotCode());
 | 
			
		||||
        if (pick != null) {
 | 
			
		||||
            pick.setStatus(BizStatus.CLOSE);
 | 
			
		||||
            pickService.update(pick);
 | 
			
		||||
        }
 | 
			
		||||
        pickService.refreshPickStatus(pick);
 | 
			
		||||
 | 
			
		||||
        //回传MES
 | 
			
		||||
        pickService.returnPick(pick.getId());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
                        : null;
 | 
			
		||||
                Item item = itemRepository.findByCode(itemCode);
 | 
			
		||||
                if (item == null) {
 | 
			
		||||
                    item = itemService.createItem(itemDate.getItemCode(), itemDate.getItemName(), itemDate.getItemQty(), BizStatus.XJ);
 | 
			
		||||
                    item = itemService.createItem(itemCode, itemDate.getItemName(), itemDate.getItemQty(), BizStatus.XJ);
 | 
			
		||||
                } else {
 | 
			
		||||
                    item.setGoodType(BizStatus.XJ);
 | 
			
		||||
                    item.setExtendD1(itemDate.getItemQty());
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
                item.setExtendD1(itemDate.getItemQty());
 | 
			
		||||
                itemRepository.save(item);
 | 
			
		||||
            }
 | 
			
		||||
            PickDetail pickDetail = createPickDetail(pick, item, BaseStatus.GD_TYPE_DP, itemDate.getItemQty(), null,splitItemCode);
 | 
			
		||||
            PickDetail pickDetail = createPickDetail(pick, item, BaseStatus.GD_TYPE_DP, itemDate.getItemQty(), null, splitItemCode);
 | 
			
		||||
            createPickDetails.add(pickDetail);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -134,7 +134,7 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
        if (pick == null) {
 | 
			
		||||
            throw new BadRequestException(gdNo + ":" + itemCode + ":" + station + "工单不存在,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
        if (BizStatus.OPEN.equals(pick.getStatus()) || BizStatus.ASSIGN.equals(pick.getStatus())) {
 | 
			
		||||
        if (BizStatus.OPEN.equals(pick.getStatus())) {
 | 
			
		||||
            throw new BadRequestException(gdNo + "工单未备料完成,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -143,12 +143,12 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
            throw new BadRequestException(pointCode + "点位不存在或已失效!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (pick.getIsCall()) {
 | 
			
		||||
            throw new BadRequestException(gdNo + "工单已叫料,请勿重复叫料!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pick.setIsCall(true);
 | 
			
		||||
        pick.setCallPoint(point);
 | 
			
		||||
        if (pick.getCallPoint()==null || pick.getCallPoint().length()<=0) {
 | 
			
		||||
            pick.setCallPoint(pointCode);
 | 
			
		||||
        }else if(!pointCode.equals(pick.getCallPoint())){
 | 
			
		||||
            pick.setCallPoint(pick.getCallPoint()+","+pointCode);
 | 
			
		||||
        }
 | 
			
		||||
        pickRepository.save(pick);
 | 
			
		||||
 | 
			
		||||
        taskService.callEmptyStock(point);
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +162,7 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
            throw new BadRequestException(gdNo + ":" + completeCode + ":" + station + "工单不存在,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (BizStatus.OPEN.equals(pick.getStatus()) || BizStatus.ASSIGN.equals(pick.getStatus())) {
 | 
			
		||||
        if (BizStatus.OPEN.equals(pick.getStatus())) {
 | 
			
		||||
            throw new BadRequestException(gdNo + "工单未备料完成,叫料失败!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -171,11 +171,14 @@ public class MesServiceImpl implements MesService {
 | 
			
		|||
            throw new BadRequestException(pointCode + "点位不存在或已失效!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (pick.getIsCall()) {
 | 
			
		||||
            throw new BadRequestException(gdNo + "工单已叫料,请勿重复叫料!");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pick.setIsCall(true);
 | 
			
		||||
        pick.setCallPoint(point);
 | 
			
		||||
        if (pick.getCallPoint()==null || pick.getCallPoint().length()<=0) {
 | 
			
		||||
            pick.setCallPoint(pointCode);
 | 
			
		||||
        }else if(!pointCode.equals(pick.getCallPoint())){
 | 
			
		||||
            pick.setCallPoint(pick.getCallPoint()+","+pointCode);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        pickRepository.save(pick);
 | 
			
		||||
        taskService.callEmptyStock(point);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,7 +133,6 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void refreshPickStatus(Pick pick) {
 | 
			
		||||
        // 查询出库单的所有明细
 | 
			
		||||
        List<PickDetail> allocatePickDetailList = pickDetailService.findByAllPickDetail(pick.getId());
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +153,7 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
        String status = pick.getStatus();
 | 
			
		||||
 | 
			
		||||
        // 更新状态
 | 
			
		||||
        if (orderQty - allocatedQty > 0 && allocatedQty != 0) {
 | 
			
		||||
        if (orderQty - allocatedQty > 0 && allocatedQty != 0 && pickedQty == 0) {
 | 
			
		||||
            status = BizStatus.ASSIGN;
 | 
			
		||||
        } else if (orderQty == allocatedQty && pickedQty == 0) {
 | 
			
		||||
            status = BizStatus.ALLOCATE;
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +179,7 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
        String itemCode = pickDetail.getPropC3() == null ? pickDetail.getItem().getCode() : pickDetail.getPropC3();
 | 
			
		||||
        jsonObject.put("MaterialCode", itemCode);
 | 
			
		||||
        //数量
 | 
			
		||||
        jsonObject.put("number", pickDetail.getOrderQty() == null ? 0 : pickDetail.getOrderQty().intValue());
 | 
			
		||||
        jsonObject.put("number", pickDetail.getPickedQty()== null ? 0 : pickDetail.getPickedQty().intValue());
 | 
			
		||||
        //taskId
 | 
			
		||||
        jsonObject.put("taskId", pickDetail.getPick().getTaskCode());
 | 
			
		||||
        return jsonObject;
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +190,10 @@ public class PickServiceImpl implements PickService {
 | 
			
		|||
        Pick pick = pickRepository.getById(pickId);
 | 
			
		||||
        List<PickDetail> pickDetailList = pickDetailRepository.findByAllPickDetail(pickId);
 | 
			
		||||
        for (PickDetail pickDetail : pickDetailList) {
 | 
			
		||||
            sendPick(UrlApi.stock(), pickDetail);
 | 
			
		||||
            if(pickDetail.getPickedQty()>0){
 | 
			
		||||
                sendPick(UrlApi.stock(), pickDetail);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        refreshPickReturn(pick);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,6 +24,7 @@ import com.youchain.businessdata.domain.*;
 | 
			
		|||
import com.youchain.businessdata.repository.*;
 | 
			
		||||
import com.youchain.businessdata.service.*;
 | 
			
		||||
import com.youchain.exception.BadRequestException;
 | 
			
		||||
import com.youchain.modules.system.domain.Dept;
 | 
			
		||||
import com.youchain.service.LogService;
 | 
			
		||||
import com.youchain.utils.*;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
| 
						 | 
				
			
			@ -199,11 +200,13 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
        //查询出待分配的pickDetail
 | 
			
		||||
        List<PickDetail> pickDetails = pickDetailService.findByPickDetailNoAllocate(pick.getId());
 | 
			
		||||
        for (PickDetail pickDetail : pickDetails) {
 | 
			
		||||
            msgList.add(this.allocate(pickDetail.getId(), pickDetail.getOrderQty(), endPoint));
 | 
			
		||||
            synchronized (pickDetail.getId()) {
 | 
			
		||||
                msgList.add(this.allocate(pickDetail.getId(), pickDetail.getOrderQty() - pickDetail.getAllocatedQty(), endPoint));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /* 更新出库单状态*/
 | 
			
		||||
        synchronized (pick) {
 | 
			
		||||
        synchronized (pick.getId()) {
 | 
			
		||||
            pickService.refreshPickStatus(pick);
 | 
			
		||||
 | 
			
		||||
            if (BizStatus.ALLOCATE.equals(pick.getStatus()) || BizStatus.ASSIGN.equals(pick.getStatus())) {
 | 
			
		||||
| 
						 | 
				
			
			@ -258,9 +261,10 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
            task.setTaskStatus(agvTask.getStatus());
 | 
			
		||||
            taskRepository.save(task);
 | 
			
		||||
        }
 | 
			
		||||
        /*更新出库单状态*/
 | 
			
		||||
 | 
			
		||||
        /*更新出库单状态*//*
 | 
			
		||||
        pick.setStatus(BizStatus.PICKUP);
 | 
			
		||||
        pickService.update(pick);
 | 
			
		||||
        pickService.update(pick);*/
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -302,7 +306,7 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void callJlTask(Pick pick) {
 | 
			
		||||
        if (pick.getStock() == null) {
 | 
			
		||||
            throw new BadRequestException(pick.getGdCode() + "请翻包拣货!");
 | 
			
		||||
            throw new BadRequestException(pick.getGdCode() + "工单未翻包拣货!");
 | 
			
		||||
        }
 | 
			
		||||
        if (pick.getCallPoint() == null) {
 | 
			
		||||
            throw new BadRequestException(pick.getGdCode() + "工单没有叫料请求!");
 | 
			
		||||
| 
						 | 
				
			
			@ -311,12 +315,17 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
        Point srcPoint = pick.getStock().getPoint();
 | 
			
		||||
 | 
			
		||||
        //终点
 | 
			
		||||
        Point endPoint = pick.getCallPoint();
 | 
			
		||||
        String[] points = pick.getCallPoint().split(",");
 | 
			
		||||
        String endPointCode = points[points.length - 1];
 | 
			
		||||
        Point endPoint = pointService.queryPoint(endPointCode, null, null, null);
 | 
			
		||||
 | 
			
		||||
        //容器
 | 
			
		||||
        Stock stock = pick.getStock();
 | 
			
		||||
 | 
			
		||||
        //创建任务
 | 
			
		||||
        if (!agvTaskService.findByEndSlotCode(endPoint.getCode(), BizStatus.CALL_PICK, "RACK_MOVE")) {
 | 
			
		||||
            throw new BadRequestException(endPoint.getCode() + "点位有任务,请稍后再试!");
 | 
			
		||||
        }
 | 
			
		||||
        AgvTask agvTask = agvTaskService.createAgvTask(BizStatus.CALL_PICK, stock, srcPoint.getCode(), endPoint.getCode(), "RACK_MOVE");
 | 
			
		||||
        agvTask.setLineSlotCode(pick.getCode());
 | 
			
		||||
        agvTaskService.update(agvTask);
 | 
			
		||||
| 
						 | 
				
			
			@ -367,7 +376,7 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
        Set<String> tps = new HashSet<>();
 | 
			
		||||
        for (Inventory inv : inventoryList) {
 | 
			
		||||
            //判断托盘是否有任务
 | 
			
		||||
            synchronized (inv) {
 | 
			
		||||
            synchronized (inv.getId()) {
 | 
			
		||||
                if (this.existsByStock(pick.getCode(), inv.getStockCode()) >= 1) {
 | 
			
		||||
                    tps.add(inv.getStockCode());
 | 
			
		||||
                    continue;
 | 
			
		||||
| 
						 | 
				
			
			@ -394,7 +403,8 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
                pickDetailService.update(pickDetail);
 | 
			
		||||
 | 
			
		||||
                //生成Task任务
 | 
			
		||||
                this.createTask(item, allocateQty, inv.getItemKey(), null, BizStatus.PICK, pickDetail, inv.getId(), inv.getStock(), startPoint, endPoint, null);
 | 
			
		||||
                Task task = this.createTask(item, allocateQty, inv.getItemKey(), null, BizStatus.PICK, pickDetail, inv.getId(), inv.getStock(), startPoint, endPoint, null);
 | 
			
		||||
                System.out.println(task.getId());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -560,6 +570,8 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
    public void moveInventory(Task task, Stock dstStock, double moveQty) {
 | 
			
		||||
        //将占用数量移位,原库存回库内
 | 
			
		||||
        Inventory inventory = inventoryService.findById(task.getInvId());
 | 
			
		||||
        ItemKey itemKey = inventory.getItemKey();
 | 
			
		||||
        Dept dept = inventory.getDept();
 | 
			
		||||
        synchronized (inventory) {
 | 
			
		||||
            inventory.setQueuedQty(inventory.getQueuedQty() - moveQty);
 | 
			
		||||
            inventory.setQuantity(inventory.getQuantity() - moveQty);
 | 
			
		||||
| 
						 | 
				
			
			@ -572,14 +584,17 @@ public class TaskServiceImpl implements TaskService {
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        //生成新库存
 | 
			
		||||
        Inventory newInventory = inventoryService.createInventory(inventory.getItemKey(), dstStock.getPoint(), dstStock, inventory.getDept(), moveQty);
 | 
			
		||||
        Inventory newInventory = inventoryService.createInventory(itemKey, dstStock.getPoint(), dstStock, dept, moveQty);
 | 
			
		||||
 | 
			
		||||
        //更新Task
 | 
			
		||||
        task.setInvId(newInventory.getId());
 | 
			
		||||
        task.setMoveQty(moveQty);
 | 
			
		||||
        task.setTaskStatus(BizStatus.FINISH);
 | 
			
		||||
        task.setInvId(inventory.getId());
 | 
			
		||||
        task.setNewInvId(newInventory.getId());
 | 
			
		||||
        task.setMoveQty(task.getMoveQty() + moveQty);
 | 
			
		||||
        task.setDstStock(dstStock);
 | 
			
		||||
        task.setDstStockCode(dstStock.getCode());
 | 
			
		||||
        if (task.getPlanQty() - task.getMoveQty() == 0) {
 | 
			
		||||
            task.setTaskStatus(BizStatus.FINISH);
 | 
			
		||||
        }
 | 
			
		||||
        taskRepository.save(task);
 | 
			
		||||
 | 
			
		||||
        PickDetail pickDetail = task.getPickDetail();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,9 @@
 | 
			
		|||
package com.youchain.modules.quartz.task;
 | 
			
		||||
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.domain.Stock;
 | 
			
		||||
import com.youchain.basicdata.service.PointService;
 | 
			
		||||
import com.youchain.basicdata.service.StockService;
 | 
			
		||||
import com.youchain.businessdata.domain.AgvTask;
 | 
			
		||||
import com.youchain.businessdata.domain.Pick;
 | 
			
		||||
import com.youchain.businessdata.domain.Task;
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +30,7 @@ import java.util.*;
 | 
			
		|||
public class pickTask {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public PointService pointService;
 | 
			
		||||
    public StockService stockService;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    public PickService pickService;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +79,7 @@ public class pickTask {
 | 
			
		|||
     */
 | 
			
		||||
    public void callJlTask() {
 | 
			
		||||
        /*查询拣货完成完成的出库单*/
 | 
			
		||||
        List<String> statuses = Arrays.asList(BizStatus.PICK_ALL);
 | 
			
		||||
        List<String> statuses = Arrays.asList(BizStatus.PICKUP,BizStatus.PICK_ALL);
 | 
			
		||||
        List<Pick> pickList = pickService.findByPickStatus(statuses, true);
 | 
			
		||||
        if (pickList.isEmpty()) {
 | 
			
		||||
            throw new BadRequestException("无拣货完成的出库单或出库单未叫料!");
 | 
			
		||||
| 
						 | 
				
			
			@ -97,8 +99,9 @@ public class pickTask {
 | 
			
		|||
        }
 | 
			
		||||
        for (AgvTask agvTask : agvTaskList) {
 | 
			
		||||
            if (BizStatus.PICK.equals(agvTask.getType())) {
 | 
			
		||||
                Point point = pointService.validatePoint(agvTask.getEndSlotCode());
 | 
			
		||||
                if(BaseStatus.FREE.equalsIgnoreCase(point.getStatus())){
 | 
			
		||||
                //目标点没有托盘继续下发下一个任务
 | 
			
		||||
                Stock stock= stockService.findByPointCode(agvTask.getEndSlotCode());
 | 
			
		||||
                if(stock==null){
 | 
			
		||||
                    kmReService.sendAgvTask(agvTask, kmReService.sendAgvTaskCcJson(agvTask));
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,7 +91,6 @@ public interface BizStatus {
 | 
			
		|||
     */
 | 
			
		||||
    String FINISH = "FINISH";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 任务类型-原材料入库
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue