package com.mes.md.service.impl;
|
|
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.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;
|
import com.mes.md.service.GlassInfoService;
|
import com.mes.md.service.TaskingService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 工作任务操作记录明细 服务实现类
|
* </p>
|
*
|
* @author wu
|
* @since 2024-08-28
|
*/
|
@Service
|
public class TaskingServiceImpl extends MPJBaseServiceImpl<TaskingMapper, Tasking> implements TaskingService {
|
@Resource
|
GlassInfoMapper glassInfoMapper;
|
@Autowired
|
GlassInfoService glassInfoService;
|
|
/**
|
* @param machine
|
* 查询当前设备,线上未完工的任务 (线上/正常)
|
* @return
|
*/
|
@Override
|
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 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 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();
|
if(Objects.equals(status, "1")){
|
QueryWrapper <GlassInfo> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("task_type","标准")
|
.eq("work_state","工作")
|
.orderByAsc("task_sequence");
|
GlassInfo glassInfo =glassInfoMapper.selectOne(queryWrapper);
|
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.setLineConfigurationId(1L);
|
|
}
|
}
|
else {
|
tasking.setTaskType("定制");
|
tasking.setLineConfigurationId(1L);
|
}
|
return save(tasking);
|
}
|
|
@Override
|
public boolean updateTasking(String scanId) {
|
Tasking glass=new Tasking();
|
glass.setLineConfigurationId(1L);
|
//glass.setCurrentCraft("上片");
|
glass.setWorkState("完工");
|
glass.setTaskType("定制");
|
//获取当前上片的定制任务id
|
//获取当前扫描的玻璃数据
|
GlassInfo glassInfo = glassInfoService.selectTaskingByGlass(scanId);
|
if(glassInfo!=null){
|
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(glass);
|
|
}
|
|
@Override
|
public boolean updateTaskingState(Tasking tasking) {
|
UpdateWrapper<Tasking>wrapper=new UpdateWrapper<>();
|
wrapper.eq("scan_id",tasking.getScanId());
|
return update(tasking,wrapper);
|
}
|
|
|
|
|
@Override
|
public Boolean insertTaskingPro(String tasking) {
|
return null;
|
}
|
|
|
}
|