严智鑫
2024-09-14 f74b51190a77c560949abd4628c5f33cd7e734ac
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/md/service/impl/TaskingServiceImpl.java
@@ -3,10 +3,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.common.S7object;
import com.mes.device.PlcParameterObject;
import com.mes.md.entity.GlassInfo;
import com.mes.md.entity.LineConfiguration;
import com.mes.md.entity.Machine;
import com.mes.md.entity.Tasking;
import com.mes.md.mapper.GlassInfoMapper;
import com.mes.md.mapper.TaskingMapper;
@@ -33,48 +35,201 @@
    GlassInfoMapper glassInfoMapper;
    @Autowired
    GlassInfoService glassInfoService;
    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
    @Override
    public boolean updateStatus(Integer state) {
        //更改上片模式
        //向设备发送选择的状态
        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("Status").getAddress(), state);
        //发送后重新读取判断是否更改成功
        String loadStatus = plcParameterObject.getPlcParameter("Status").getValue();
        return state == Integer.parseInt(loadStatus);
    }
    /**
     * @param state
     * @param machine
     * 查询当前设备,线上未完工的任务   (线上/正常)
     * @return
     */
    @Override
    public boolean updateLoadState(Integer state) {
        //更改联机状态
        //向设备发送选择的状态
        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("loadState").getAddress(), state);
        //发送后重新读取判断是否更改成功
        String loadState = plcParameterObject.getPlcParameter("loadState").getValue();
        return state == Integer.parseInt(loadState);
    public List<Tasking> findMachineTask(Machine machine) {
        List<Tasking> list=baseMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>()
                .selectAll(Tasking.class)
                .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId)
                .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId)
                .eq(LineConfiguration::getMachineId,machine.getId())
                .eq(Tasking::getGlassState,"正常")
                .eq(Tasking::getState,"线上")
                .ne(Tasking::getWorkState,"完工")
                .orderByAsc(Tasking::getTaskSequence));
        return list;
    }
    /**
     * @param machine,workState
     * 查询当前设备,线上【等待/工作/完工】的任务 升序   (线上/正常)
     * @return
     */
    @Override
    public boolean updateDamage(Tasking tasking) {
        UpdateWrapper<Tasking> queryWrapper = new UpdateWrapper<>();
        queryWrapper.eq("glass_id",tasking.getGlassId())
                .set("work_state",tasking.getWorkState());
        return this.update(queryWrapper);
    public List<Tasking> findMachineWorkStateTask(Machine machine, String workState) {
        List<Tasking> list=baseMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>()
                .selectAll(Tasking.class)
                .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId)
                .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId)
                .eq(LineConfiguration::getMachineId,machine.getId())
                .eq(Tasking::getGlassState,"正常")
                .eq(Tasking::getState,"线上")
                .eq(Tasking::getWorkState,workState)
                .orderByAsc(Tasking::getTaskSequence));
        return list;
    }
    /**
     * @param machine
     * 当前设备标记正在工作:线上等待的任务第一条   (线上/正常)
     * @return
     */
    @Override
    public List<Tasking> selectTasking() {
        QueryWrapper<Tasking> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("task_sequence");
        return list(queryWrapper);
    public Tasking startMachineTask(Machine machine) {
        List<Tasking> list=this.findMachineWorkStateTask(machine,"等待");
        if(!list.isEmpty()){
            Tasking tasking=list.get(0);
            tasking.setWorkState("正在工作");
            if(baseMapper.updateById(tasking)>0){
                return tasking;
            };
        }
        return null;
    }
    /**
     * @param machine
     * 当前设备标记完成:正在工作的第一个任务   (线上/正常)   返回完成数量
     * @return
     */
    @Override
    public int finishMachineTask(Machine machine) {
        List<Tasking> list=this.findMachineWorkStateTask(machine,"正在工作");
        if(!list.isEmpty()){
            Tasking tasking=list.get(0);
            tasking.setWorkState("完工");
            return baseMapper.updateById(tasking);
        }
        return 0;
    }
    /**
     * @param machine
     * 当前设备标记失败,正在工作的最后一个任务   (线上/正常)   返回失败数量
     * @return
     */
    @Override
    public int loseMachineTask(Machine machine) {
        List<Tasking> list=baseMapper.selectJoinList(Tasking.class,new MPJLambdaWrapper<Tasking>()
                .selectAll(Tasking.class)
                .innerJoin(LineConfiguration.class,LineConfiguration::getId,Tasking::getLineConfigurationId)
                .innerJoin(Machine.class,Machine::getId,LineConfiguration::getMachineId)
                .eq(LineConfiguration::getMachineId,machine.getId())
                .eq(Tasking::getGlassState,"正常")
                .eq(Tasking::getState,"线上")
                .eq(Tasking::getWorkState,"正在工作")
                .orderByDesc(Tasking::getTaskSequence));
        if(!list.isEmpty()){
            Tasking tasking=list.get(0);
            tasking.setWorkState("等待");
            return baseMapper.updateById(tasking);
        }
        return 0;
    }
    /**
     * @param tasking
     * 破损玻璃,  (线上/正常)   返回破损数量
     * @return
     */
    @Override
    public int damagedTask(Tasking tasking) {
        Tasking oldTasking=baseMapper.selectById(tasking);
        if(!Objects.isNull(oldTasking)){
            oldTasking.setGlassState("破损");
            return baseMapper.updateById(oldTasking);
        }
        return 0;
    }
    /**
     * @param tasking
     * 修改状态 【下线】
     * @return
     */
    @Override
    public int glassDownLine(Tasking tasking) {
        Tasking oldTasking=baseMapper.selectById(tasking);
        if (!Objects.isNull(oldTasking)){
            oldTasking.setState(tasking.getState());
            return baseMapper.updateById(oldTasking);
        }
        return 0;
    }
    /**
     * @param taskingList
     * 批量修改状态 【上线】
     * @return
     */
    @Override
    public int glassTopLine(List<Tasking> taskingList) {
        int resultCount=0;
        for (Tasking tasking:taskingList){
            Tasking oldTasking=baseMapper.selectById(tasking);
            if (!Objects.isNull(oldTasking)){
                oldTasking.setState(tasking.getState());
                resultCount+=baseMapper.updateById(oldTasking);
            }
        }
        return resultCount;
    }
//
//    @Override
//    public boolean updateStatus(Integer state) {
//        //更改上片模式
//        //向设备发送选择的状态
//        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("Status").getAddress(), state);
//        //发送后重新读取判断是否更改成功
//        String loadStatus = plcParameterObject.getPlcParameter("Status").getValue();
//        return state == Integer.parseInt(loadStatus);
//
//    }
//
//    /**
//     * @param state
//     * @return
//     */
//    @Override
//    public boolean updateLoadState(Integer state) {
//        //更改联机状态
//        //向设备发送选择的状态
//        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("loadState").getAddress(), state);
//        //发送后重新读取判断是否更改成功
//        String loadState = plcParameterObject.getPlcParameter("loadState").getValue();
//        return state == Integer.parseInt(loadState);
//
//    }
//
//    @Override
//    public boolean updateDamage(Tasking tasking) {
//        UpdateWrapper<Tasking> queryWrapper = new UpdateWrapper<>();
//        queryWrapper.eq("glass_id",tasking.getGlassId())
//                .set("work_state",tasking.getWorkState());
//        return this.update(queryWrapper);
//    }
//
//    @Override
//    public List<Tasking> selectTasking() {
//        QueryWrapper<Tasking> queryWrapper = new QueryWrapper<>();
//        queryWrapper.orderByDesc("task_sequence");
//        return list(queryWrapper);
//    }
//    @Override
//    public Tasking selectTasking(Tasking tasking) {
//        QueryWrapper<Tasking> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("line_configuration_id",tasking.getLineConfigurationId())
//                .eq("state",tasking.getState())
//                .eq("work_state",tasking.getWorkState())
//                .orderByAsc("glass_id");
//        return getOne(queryWrapper);
//    }
    @Override
    public Boolean insertTasking(String status) {
        Tasking tasking = new Tasking();
@@ -100,13 +255,13 @@
            tasking.setSilkScreenY(glassInfo.getSilkScreenY());
            tasking.setIsMarking(glassInfo.getIsMarking());
            tasking.setIsSilkScreen(glassInfo.getIsSilkScreen());
            tasking.setCurrentCraft("上片");
            tasking.setLineConfigurationId(1L);
        }
        }
        else {
            tasking.setTaskType("定制");
            tasking.setCurrentCraft("上片");
            tasking.setLineConfigurationId(1L);
        }
        return save(tasking);
    }
@@ -114,32 +269,32 @@
    @Override
    public boolean updateTasking(String scanId) {
        Tasking glass=new Tasking();
        glass.setCurrentCraft("上片");
        glass.setState("完成");
        glass.setLineConfigurationId(1L);
        //glass.setCurrentCraft("上片");
        glass.setWorkState("完工");
        glass.setTaskType("定制");
        //获取当前上片的定制任务id
        Tasking tasking= selectTasking(glass);
        //获取当前扫描的玻璃数据
        GlassInfo glassInfo = glassInfoService.selectTaskingByGlass(scanId);
        if(glassInfo!=null){
            tasking.setBatchNumber(glassInfo.getBatchNumber());
            tasking.setScanId(glassInfo.getScanId());
            tasking.setProgramId(glassInfo.getProgramId());
            tasking.setTaskType(glassInfo.getTaskType());
            tasking.setTaskSequence(glassInfo.getTaskSequence());
            tasking.setTaskQuantity(glassInfo.getTaskQuantity());
            tasking.setLength(glassInfo.getLength());
            tasking.setWidth(glassInfo.getWidth());
            tasking.setThickness(glassInfo.getThickness());
            tasking.setDrawingGlue(glassInfo.getDrawingGlue());
            tasking.setDrawingMarking(glassInfo.getDrawingMarking());
            tasking.setSilkScreenX(glassInfo.getSilkScreenX());
            tasking.setSilkScreenY(glassInfo.getSilkScreenY());
            tasking.setIsMarking(glassInfo.getIsMarking());
            tasking.setIsSilkScreen(glassInfo.getIsSilkScreen());
            tasking.setCurrentCraft("扫码");
            glass.setBatchNumber(glassInfo.getBatchNumber());
            glass.setScanId(glassInfo.getScanId());
            glass.setProgramId(glassInfo.getProgramId());
            glass.setTaskType(glassInfo.getTaskType());
            glass.setTaskSequence(glassInfo.getTaskSequence());
            glass.setTaskQuantity(glassInfo.getTaskQuantity());
            glass.setLength(glassInfo.getLength());
            glass.setWidth(glassInfo.getWidth());
            glass.setThickness(glassInfo.getThickness());
            glass.setDrawingGlue(glassInfo.getDrawingGlue());
            glass.setDrawingMarking(glassInfo.getDrawingMarking());
            glass.setSilkScreenX(glassInfo.getSilkScreenX());
            glass.setSilkScreenY(glassInfo.getSilkScreenY());
            glass.setIsMarking(glassInfo.getIsMarking());
            glass.setIsSilkScreen(glassInfo.getIsSilkScreen());
            glass.setLineConfigurationId(2L);
        }
        return updateById(tasking);
        return updateById(glass);
    }
@@ -151,58 +306,12 @@
    }
    @Override
    public Tasking selectTasking(Tasking tasking) {
        QueryWrapper<Tasking> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("current_craft",tasking.getCurrentCraft())
                .eq("state",tasking.getState())
                .eq("work_state",tasking.getWorkState())
                .orderByAsc("glass_id");
        return getOne(queryWrapper);
    }
    @Override
    public Boolean insertTaskingPro(String tasking) {
        return null;
    }
    /**
     * @param tasking
     * 查询当前工艺,线上未完工的任务
     * @return
     */
    @Override
    public List<Tasking> findCraftTasking(Tasking tasking) {
        return baseMapper.selectList(new MPJLambdaQueryWrapper<Tasking>()
                .selectAll(Tasking.class)
                .eq(Tasking::getCurrentCraft,tasking.getCurrentCraft())
                .ne(Tasking::getWorkState,"完工")
                .orderByAsc(Tasking::getGlassId));
    }
    /**
     * @param tasking
     * 修改任务状态 【破损/失败/完工】
     * @return
     */
    @Override
    public int updateCraftTasking(Tasking tasking) {
        Tasking oldTasking=baseMapper.selectById(tasking);
        oldTasking.setWorkState(tasking.getWorkState());
        return baseMapper.updateById(oldTasking);
    }
    /**
     * @param tasking
     * 修改状态 【下线】
     * @return
     */
    @Override
    public int updateDownLine(Tasking tasking) {
        Tasking oldTasking=baseMapper.selectById(tasking);
        oldTasking.setState(tasking.getState());
        return baseMapper.updateById(oldTasking);
    }
}