package com.mes.downworkstation.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.github.yulichang.query.MPJQueryWrapper;
|
import com.mes.common.S7object;
|
import com.mes.common.utils.RedisUtil;
|
import com.mes.damage.entity.Damage;
|
import com.mes.damage.service.DamageService;
|
import com.mes.device.PlcParameterObject;
|
import com.mes.downglassinfo.entity.DownGlassInfo;
|
import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
|
import com.mes.downworkstation.entity.DownWorkstation;
|
import com.mes.downworkstation.entity.DownWorkstationTask;
|
import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
|
import com.mes.downworkstation.mapper.DownWorkstationMapper;
|
import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
|
import com.mes.downworkstation.service.DownWorkstationService;
|
import com.mes.downworkstation.service.DownWorkstationTaskService;
|
import com.mes.glassinfo.service.GlassInfoService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
@Service
|
public class DownWorkstationServiceImpl extends ServiceImpl<DownWorkstationMapper, DownWorkstation> implements DownWorkstationService {
|
|
@Autowired
|
private DownWorkstationMapper downWorkstationMapper;
|
@Autowired(required = false)
|
private DownWorkstationTaskMapper downWorkstationTaskMapper;
|
@Autowired
|
private DownGlassInfoMapper downGlassInfoMapper;
|
@Autowired
|
private GlassInfoService glassInfoService;
|
@Autowired
|
private DamageService damageservice;
|
|
@Autowired
|
private DownWorkstationTaskService downWorkstationTaskService;
|
@Resource
|
private RedisUtil redisUtil;
|
|
// @Override
|
// public List<DownWorkstation> gettwoDownWorkstations() {
|
// return downWorkstationMapper.getDownWorkstationsInRange(6,10);
|
// }
|
//获取总数量
|
@Override
|
public int getTotalQuantity(int workstationId) {
|
DownWorkstation result = baseMapper.selectOne(new QueryWrapper<DownWorkstation>().lambda()
|
.select(DownWorkstation::getTotalQuantity)
|
.eq(DownWorkstation::getWorkstationId, workstationId));
|
|
return result != null ? result.getTotalQuantity() : 0;
|
}
|
|
|
//工位显示
|
@Override
|
public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start, int end) {
|
MPJQueryWrapper<DownWorkstation> queryWrapper = new MPJQueryWrapper<>();
|
queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight,total_quantity,racks_number,other_number")
|
.leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
|
.groupBy("t.workstation_id", "t.flow_card_id")
|
.orderByAsc("t.workstation_id").between("t.workstation_id", start, end)
|
|
;
|
|
List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
|
// List<DownWorkstionAndDownGlassinfo> workstationList = null;
|
List<Map<String, Object>> result = new ArrayList<>();
|
for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
|
Map<String, Object> rack = new HashMap<>();
|
Map<String, Object> item = new HashMap<>();
|
item.put("height", downWorkstionAndDownGlassinfo.getTotalheight());
|
item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth());
|
item.put("fillColor", "yellow");
|
item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId());
|
if (downWorkstionAndDownGlassinfo.getTotalQuantity() == downWorkstionAndDownGlassinfo.getRacksNumber() + downWorkstionAndDownGlassinfo.getRacksNumber()) {
|
item.put("fullCardColor", "red");
|
} else {
|
item.put("fullCardColor", "blue");
|
}
|
|
// 查询 DownGlassInfo 并添加到 item 中
|
MPJQueryWrapper<DownGlassInfo> glassInfoQueryWrapper = new MPJQueryWrapper<>();
|
glassInfoQueryWrapper.select("*"); // 查询所有列
|
glassInfoQueryWrapper.eq("flow_card_id", downWorkstionAndDownGlassinfo.getFlowCardId());
|
List<DownGlassInfo> downGlassInfoList = downGlassInfoMapper.selectList(glassInfoQueryWrapper);
|
|
|
if (!downGlassInfoList.isEmpty()) {
|
|
item.put("downGlassInfoList", downGlassInfoList);
|
|
}
|
|
rack.put("item", item);
|
result.add(rack);
|
}
|
log.info("result" + (result));
|
return result; // 返回最终结果
|
}
|
|
|
//根据条件获取落架数量
|
@Override
|
public int getRacksNumber(int workstationId) {
|
QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
|
queryWrapper.select("racks_number")
|
.eq("workstation_id", workstationId);
|
|
DownWorkstation result = baseMapper.selectOne(queryWrapper);
|
return result != null ? result.getRacksNumber() : 0;
|
}
|
|
//根据条件获取工位玻璃信息
|
@Override
|
public List<DownWorkstation> getoneDownWorkstations(int startId, int endId) {
|
QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
|
queryWrapper.between("workstation_id", startId, endId);
|
|
return baseMapper.selectList(queryWrapper);
|
}
|
|
|
//
|
|
|
@Override
|
public void updateracksnumber(String flowCardId, int racksNumber) {
|
UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("racks_number", racksNumber).eq("flow_card_id", flowCardId);
|
baseMapper.update(new DownWorkstation(), updateWrapper);
|
}
|
|
|
@Override
|
public void updateFlowCardIdAndCount(String flowCardId, int workstationId, int layer) {
|
int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, layer);
|
QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("process_id", flowCardId);
|
queryWrapper.eq("technology_number", layer);
|
|
int otherNumber = damageservice.count(queryWrapper);
|
UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("total_quantity", glassInfoCount)
|
.set("flow_card_id", flowCardId)
|
.set("layer", layer)
|
.set("other_number", otherNumber)
|
.eq("workstation_id", workstationId);
|
|
this.update(updateWrapper);
|
|
}
|
|
@Override
|
public void clearFlowCardId(int workstationId) {
|
UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.set("flow_card_id", null)
|
.set("total_quantity", 0)
|
.set("racks_number", 0)
|
.eq("workstation_id", workstationId);
|
|
baseMapper.update(new DownWorkstation(), updateWrapper);
|
}
|
|
|
@Override
|
public DownWorkstation selectByFlowCardId(String flowcardid) {
|
QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("flow_card_id", flowcardid);
|
|
return baseMapper.selectOne(queryWrapper);
|
}
|
|
|
@Transactional
|
public void crossDatabaseQuery() {
|
// 从 MySQL 数据库中查询数据,只返回一条符合条件的数据
|
DownWorkstation downWorkstation = downWorkstationTaskMapper.selectdownWorkstationstate();
|
|
// 从 SQL Server 数据库中查询数据
|
List<DownWorkstationTask> downWorkstationTasks = downWorkstationTaskMapper.selectList();
|
|
}
|
|
|
@Override
|
public boolean updateDownWorkstationstate(DownWorkstation downWorkstation) {
|
|
DownWorkstation downWork = baseMapper.selectById(downWorkstation.getId());
|
|
if (downWork != null) {
|
|
downWork.setEnableState(downWorkstation.getEnableState());
|
|
baseMapper.updateById(downWork);
|
|
return true;
|
} else {
|
|
return false;
|
}
|
}
|
|
@Override
|
public String closeAlarmSignal() {
|
PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
|
S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("alarm_signal").getAddress(), 0);
|
return "success";
|
}
|
|
@Override
|
public void autoPrint(Boolean flag) {
|
redisUtil.setCacheObject("autoPrint", flag);
|
}
|
|
}
|