package com.zy.asrs.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.mapper.EntityWrapper; 
 | 
import com.zy.asrs.mapper.TaskWrkMapper; 
 | 
import com.zy.asrs.entity.TaskWrk; 
 | 
import com.zy.asrs.service.TaskWrkService; 
 | 
import com.baomidou.mybatisplus.service.impl.ServiceImpl; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Propagation; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
@Slf4j 
 | 
@Service("taskWrkService") 
 | 
public class TaskWrkServiceImpl extends ServiceImpl<TaskWrkMapper, TaskWrk> implements TaskWrkService { 
 | 
  
 | 
    @Override 
 | 
    public TaskWrk selectByTaskNo(String taskNo) { 
 | 
        return this.baseMapper.selectByTaskNo(taskNo); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public TaskWrk selectByStartPoint(String taskNo) { 
 | 
        return this.baseMapper.selectByStartPoint(taskNo); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public TaskWrk selectByWrkNo(Integer wrkNo) { 
 | 
        return this.baseMapper.selectByWrkNo(wrkNo); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<TaskWrk> selectReceive() { 
 | 
        return this.baseMapper.selectReceive(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional(propagation = Propagation.REQUIRES_NEW) 
 | 
    public void distribute(String taskNo, Long userId) { 
 | 
//        TaskWrk taskWrk = this.selectByTaskNo(taskNo); 
 | 
//        if (taskWrk == null) { 
 | 
//            throw new CoolException("WMS任务不存在"); 
 | 
//        } 
 | 
// 
 | 
//        if (taskWrk.getStatus() != 1) { 
 | 
//            throw new CoolException("任务已派发"); 
 | 
//        } 
 | 
// 
 | 
//        //创建任务 
 | 
//        if (taskWrk.getIoType() == 1) { 
 | 
//            //1.入库 
 | 
//            if (taskWrk.getStartPoint() == null || taskWrk.getTargetPoint() == null) { 
 | 
//                throw new CoolException("未接收到起点和终点,不进行派发"); 
 | 
//            } 
 | 
//            startup(taskWrk, userId); 
 | 
//        }else if(taskWrk.getIoType() == 2){ 
 | 
//            //2.出库 
 | 
//            stockOut(taskWrk, userId); 
 | 
//        } else if (taskWrk.getIoType() == 3) { 
 | 
//            //3.库格移载 
 | 
//            locMove(taskWrk, userId); 
 | 
//        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void startup(TaskWrk taskWrk, Long userId) { 
 | 
  
 | 
//        //入库任务派发 
 | 
//        StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getStartPoint()), taskWrk.getCrnNo()); 
 | 
//        if (staDesc == null) { 
 | 
//            throw new CoolException("入库路径不存在"); 
 | 
//        } 
 | 
//        int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号 
 | 
//        taskWrk.setWrkNo(workNo);//工作号 
 | 
//        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态 
 | 
//        taskWrk.setAssignTime(new Date());//派发时间 
 | 
//        taskWrk.setWrkSts(3);//工作状态 2.吊车入库 
 | 
//        taskWrk.setCrnNo(staDesc.getCrnNo());//堆垛机号 
 | 
//        taskWrk.setModiTime(new Date()); 
 | 
//        taskWrk.setModiUser(userId); 
 | 
//        updateById(taskWrk); 
 | 
// 
 | 
//        CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), true); 
 | 
//        if (crnStn == null) { 
 | 
//            throw new CoolException("堆垛机入库站不存在"); 
 | 
//        } 
 | 
//        // 命令下发区 -------------------------------------------------------------------------- 
 | 
//        CrnCommand crnCommand = new CrnCommand(); 
 | 
//        crnCommand.setCrnNo(staDesc.getCrnNo()); // 堆垛机编号 
 | 
//        crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 工作号 
 | 
//        crnCommand.setAckFinish((short) 0);  // 任务完成确认位 
 | 
//        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转 
 | 
//        crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位列 
 | 
//        crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位层 
 | 
//        crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 源库位排 
 | 
//        crnCommand.setDestinationPosX(Utils.getRowShort(taskWrk.getTargetPoint()));     // 目标库位列 
 | 
//        crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 目标库位层 
 | 
//        crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 目标库位排 
 | 
//        crnCommand.setCommand((short)1); 
 | 
//        if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(5, crnCommand),false)) { 
 | 
//            log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); 
 | 
//            throw new CoolException("堆垛机命令生成失败"); 
 | 
//        }else{ 
 | 
//            try{ 
 | 
//                HashMap<String, Object> headParam = new HashMap<>(); 
 | 
//                headParam.put("taskNo",taskWrk.getTaskNo()); 
 | 
//                headParam.put("status",taskWrk.getStatus()); 
 | 
//                headParam.put("ioType",taskWrk.getIoType()); 
 | 
//                headParam.put("barcode",taskWrk.getBarcode()); 
 | 
////                headParam.put("reportTime",new Date()); 
 | 
//                String response; 
 | 
//                response = new HttpHandler.Builder() 
 | 
//                        // .setHeaders(headParam) 
 | 
//                        .setUri(wmsUrl) 
 | 
//                        .setPath(taskStatusFeedbackPath) 
 | 
//                        .setJson(JSON.toJSONString(headParam)) 
 | 
//                        .build() 
 | 
//                        .doPost(); 
 | 
// 
 | 
//                JSONObject jsonObject = JSON.parseObject(response); 
 | 
//                apiLogService.save("wcs派发入库任务上报wms" 
 | 
//                        ,wmsUrl+taskStatusFeedbackPath 
 | 
//                        ,null 
 | 
//                        ,"127.0.0.1" 
 | 
//                        ,JSON.toJSONString(headParam) 
 | 
//                        ,response 
 | 
//                        ,true 
 | 
//                ); 
 | 
//            }catch (Exception e){ 
 | 
//                log.error("wcs派发入库任务上报wms失败", taskWrk); 
 | 
////                throw new CoolException("wcs派发入库任务上报wms失败"); 
 | 
//            } 
 | 
// 
 | 
//        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void stockOut(TaskWrk taskWrk, Long userId) { 
 | 
//        //出库任务派发 
 | 
//        StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getTargetPoint()), taskWrk.getCrnNo()); 
 | 
//        if (staDesc == null) { 
 | 
//            return;//不存在路径 
 | 
//        } 
 | 
//        int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);//获取出库工作号 
 | 
//        taskWrk.setWrkNo(workNo);//工作号 
 | 
//        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态 
 | 
//        taskWrk.setAssignTime(new Date());//派发时间 
 | 
//        taskWrk.setWrkSts(12);//工作状态 12.吊车入库中 
 | 
//        taskWrk.setCrnNo(staDesc.getCrnNo());//堆垛机号 
 | 
//        taskWrk.setModiTime(new Date()); 
 | 
//        taskWrk.setModiUser(userId); 
 | 
//        updateById(taskWrk); 
 | 
// 
 | 
//        CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), false); 
 | 
//        if (crnStn == null) { 
 | 
//            throw new CoolException("堆垛机出库站不存在"); 
 | 
//        } 
 | 
//        //生成堆垛机出库命令 
 | 
//        CrnCommand crnCommand = new CrnCommand(); 
 | 
//        crnCommand.setCrnNo(taskWrk.getCrnNo()); // 堆垛机编号 
 | 
//        crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 工作号 
 | 
//        crnCommand.setAckFinish((short) 0);  // 任务完成确认位 
 | 
//        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转 
 | 
//        crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint()));     // 源库位排 
 | 
//        crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint()));     // 源库位列 
 | 
//        crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint()));     // 源库位层 
 | 
//        crnCommand.setDestinationPosX(crnStn.getBay().shortValue());     // 目标库位排 
 | 
//        crnCommand.setDestinationPosY(crnStn.getLev().shortValue());     // 目标库位列 
 | 
//        crnCommand.setDestinationPosZ(crnStn.getRow().shortValue());     // 目标库位层 
 | 
//        crnCommand.setCommand((short)1); 
 | 
//        if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(5, crnCommand))) { 
 | 
//            log.error("堆垛机命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); 
 | 
//            throw new CoolException("堆垛机命令生成失败"); 
 | 
//        } 
 | 
// 
 | 
//        //生成输送线命令 
 | 
//        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); 
 | 
//        StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone(); 
 | 
//        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); 
 | 
//        staProtocol.setStaNo((short) Integer.parseInt(taskWrk.getTargetPoint())); 
 | 
//        if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(3, staProtocol))) { 
 | 
//            log.error("输送线命令生成失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); 
 | 
//            throw new CoolException("输送线命令生成失败"); 
 | 
//        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void locMove(TaskWrk taskWrk, Long userId) { 
 | 
//        //库格移载任务派发 
 | 
//       if (Cools.isEmpty(taskWrk.getTargetPoint())){ 
 | 
//           return; 
 | 
//       } 
 | 
//        int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);//获取工作号 
 | 
//        taskWrk.setWrkNo(workNo);//工作号 
 | 
//        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态 
 | 
//        taskWrk.setAssignTime(new Date());//派发时间 
 | 
//        taskWrk.setWrkSts(11);//工作状态 11.生成出库ID 
 | 
//        //taskWrk.setCrnNo(staDesc.getCrnNo());//堆垛机号 
 | 
//        taskWrk.setModiTime(new Date()); 
 | 
//        taskWrk.setModiUser(userId); 
 | 
//        updateById(taskWrk); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<TaskWrk> selectToBeHistoryData() { 
 | 
        return this.baseMapper.selectToBeHistoryData(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public int saveToHistory(String taskNo) { 
 | 
        return this.baseMapper.saveToHistory(taskNo); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public int getStoreCount(Integer crnNo){ 
 | 
        return selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", crnNo).in("wrk_sts",12,2)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public TaskWrk selectStaWorking(Integer wrkNo){ 
 | 
        return this.baseMapper.selectStaWorking(wrkNo); 
 | 
    } 
 | 
} 
 |