| | |
| | | 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; |
| | |
| | | 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(); |
| | |
| | | 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); |
| | | } |
| | |
| | | @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); |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | @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); |
| | | } |
| | | |
| | | } |