package com.northglass.service.shelf;
|
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.northglass.constants.StateConstants.ConnectState;
|
import com.northglass.constants.StateConstants.RackState;
|
import com.northglass.constants.StateConstants.ShelfHoistState;
|
import com.northglass.constants.StateConstants.ShelfRankState;
|
import com.northglass.constants.StateConstants.ShelfState;
|
import com.northglass.entity.RawPackage;
|
import com.northglass.entity.Shelf;
|
import com.northglass.entity.ShelfHoist;
|
import com.northglass.entity.ShelfRank;
|
import com.northglass.entity.ShelfTask;
|
import com.northglass.entity.TestOut;
|
import com.northglass.listener.ShelfClientListener;
|
import com.northglass.listener.ShelfConnection;
|
import com.northglass.repository.ShelfDao;
|
import com.northglass.repository.ShelfHoistDao;
|
import com.northglass.repository.ShelfRankDao;
|
import com.northglass.repository.ShelfTaskDao;
|
import com.northglass.repository.TestOutDao;
|
import com.northglass.service.message.ShelfMessageProcessor;
|
|
@Component
|
@Transactional
|
public class ShelfService {
|
|
@Autowired
|
private ShelfDao shelfDao;
|
|
@Autowired
|
private ShelfTaskDao shelfTaskDao;
|
|
// @Autowired
|
// private RawPackageDao rawPackageDao;
|
|
@Autowired
|
private ShelfMessageProcessor messageProcessor;
|
|
@Autowired
|
private ShelfRankDao shelfRankDao;
|
|
@Autowired
|
private ShelfHoistDao shelfHoistDao;
|
|
@Autowired
|
private TestOutDao testOutDao;
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(ShelfService.class);
|
|
public Shelf save(Shelf shelf) {
|
return shelfDao.save(shelf);
|
}
|
|
public ShelfTask getInWorkTask() {
|
return shelfTaskDao.findInWorkTask();
|
}
|
|
public ShelfTask getStopTask() {
|
return shelfTaskDao.findStopTask();
|
}
|
|
public List<ShelfTask> findCompletedTasks() {
|
return shelfTaskDao.findCompletedTasks();
|
}
|
|
public List<ShelfTask> findCompletedTasksByFlag(String flag){
|
return shelfTaskDao.findCompletedTasksByFlag(flag);
|
}
|
|
public List<ShelfTask> getWaitingTasksByFlag(String flag) {
|
List<ShelfTask> taskList = shelfTaskDao.findWaitingTasksByFlag(flag);
|
return taskList;
|
}
|
|
public ShelfTask getInWorkingTasks() {
|
ShelfTask shelfTask = shelfTaskDao.findInWorkingTask();
|
return shelfTask;
|
}
|
|
public Shelf getDefaultShelf() {
|
List<Shelf> shelfList = shelfDao.findAll();
|
|
if (shelfList.size() == 0) {
|
return null;
|
}
|
|
return shelfList.get(0);
|
}
|
|
public void setConnectState(String connectState) {
|
Shelf shelf = getDefaultShelf();
|
shelf.setConnectState(connectState);
|
shelfDao.save(shelf);
|
}
|
|
public void resetState() {
|
Shelf shelf = getDefaultShelf();
|
|
if (shelf == null) {
|
return;
|
}
|
|
shelf.setConnectState(ConnectState.NO_CONNECT);
|
shelf.setState(ShelfState.STOPPED);
|
shelfDao.save(shelf);
|
}
|
|
public String generateReturnMessage(String sendMessageHex) {
|
return messageProcessor.generateReturnMessage(sendMessageHex);
|
}
|
|
public void connect() {
|
List<Shelf> shelfs = shelfDao.findAll();
|
// 若监听线程为空,则新建监听线程
|
for (Shelf shelf : shelfs) {
|
LOGGER.debug("> 创建连接:"+shelf.getIpAddress()+":"+shelf.getPort());
|
if (shelf.getServerConnection().getThread() == null) {
|
Thread thread = new Thread(new ShelfClientListener(shelf, this));
|
thread.start();
|
setConnectState(ConnectState.CONNECTING);
|
shelf.getServerConnection().setThread(thread);
|
}
|
}
|
}
|
|
public void disconnect() {
|
try {
|
ShelfConnection.closeConnection();
|
setConnectState(ConnectState.NO_CONNECT);
|
setState(ShelfState.STOPPED);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
public void setState(String state) {
|
Shelf shelf = getDefaultShelf();
|
shelf.setState(state);
|
shelfDao.save(shelf);
|
}
|
|
public ShelfTask saveShelfTask(ShelfTask shelfTask) {
|
return shelfTaskDao.save(shelfTask);
|
}
|
|
public ShelfRank saveShelfRank(ShelfRank rank) {
|
return shelfRankDao.save(rank);
|
}
|
|
public ShelfHoist saveShelfHoist(ShelfHoist hoist) {
|
return shelfHoistDao.save(hoist);
|
}
|
|
public String getEditShelfRankHtml() {
|
StringBuffer html = new StringBuffer();
|
List<ShelfRank> shelfRankList = shelfRankDao.findAll();
|
|
for (ShelfRank shelfRank : shelfRankList) {
|
if (ShelfRankState.FREE.equals(shelfRank.getState())) {
|
html.append("<tr>");
|
html.append("<td style='width: 10px'><input hidden='hidden' id='").append(shelfRank.getId()).append("'></td>");
|
html.append("<td>").append(shelfRank.getNumber()).append(" ").append(shelfRank.getState()).append("</td>");
|
html.append("<td></td>");
|
html.append("<td><div class='btn-group pull-right'>");
|
html.append("<a href='#' onclick='deleteRank(").append(shelfRank.getId()).append(")' class='btn btn-middle btn-danger'>删除料架</a>");
|
html.append("<a href='/gmms2/rawpackage/updateForEditShelfRank/").append(shelfRank.getId()).append("' class='btn btn-middle btn-info'>更新原片</a>");
|
html.append("<a href='/gmms2/rawpackage/createForEditShelfRank/").append(shelfRank.getId()).append("' class='btn btn-middle btn-success'>添加原片</a>");
|
html.append("</div></td>");
|
|
html.append("</tr>");
|
}
|
else if (ShelfRankState.IN_WORK.equals(shelfRank.getState())) {
|
html.append("<tr class='info'>");
|
html.append("<td style='width: 10px'><input hidden='hidden' id='").append(shelfRank.getId()).append("'></td>");
|
html.append("<td>").append(shelfRank.getNumber()).append(" ").append(shelfRank.getState()).append("</td>");
|
|
if (shelfRank.getRawPackage() != null) {
|
html.append("<td>").append(shelfRank.getRawPackage().getDescription()).append("</td>");
|
html.append("<td><div class='btn-group pull-right'>");
|
html.append("<a href='#' onclick='deleteRank(").append(shelfRank.getId()).append(")' class='btn btn-middle btn-danger'>删除料架</a>");
|
html.append("<a href='/gmms2/rawpackage/updateForEditShelfRank/").append(shelfRank.getId()).append("' class='btn btn-middle btn-info'>更新原片</a>");
|
html.append("<a href='#' onclick='deleteRawPackageForRank(").append(shelfRank.getId()).append(")' class='btn btn-middle btn-danger'>删除原片</a>");
|
html.append("</div></td>");
|
}
|
|
else {
|
html.append("<td></td><td></td>");
|
}
|
|
html.append("</tr>");
|
}
|
}
|
|
return html.toString();
|
}
|
|
public String getEditShelfHoistHtml() {
|
StringBuffer html = new StringBuffer();
|
List<ShelfHoist> shelfHoistList = shelfHoistDao.findAll();
|
LOGGER.debug("shelfHoistList size: " + shelfHoistList.size());
|
|
for (ShelfHoist shelfHoist : shelfHoistList) {
|
if (ShelfHoistState.FREE.equals(shelfHoist.getState())) {
|
html.append("<tr>");
|
html.append("<td>").append(shelfHoist.getNumber()).append(" ").append(shelfHoist.getState()).append("</td>");
|
html.append("<td></td>");
|
html.append("<td><div class='btn-group pull-right'>");
|
html.append("<a href='/gmms2/shelfhoist/modify/").append(shelfHoist.getId()).append("' class='btn btn-middle btn-primary'>编辑吊装位</a>");
|
html.append("<a href='#' onclick='deleteHoist(").append(shelfHoist.getId()).append(")' class='btn btn-middle btn-danger'>删除吊装位</a>");
|
html.append("<a href='/gmms2/rawpackage/createForEditShelfHoist/").append(shelfHoist.getId()).append("' class='btn btn-middle btn-success'>添加原片</a>");
|
html.append("</div></td>");
|
html.append("</tr>");
|
}
|
else if (ShelfHoistState.IN_WORK.equals(shelfHoist.getState())) {
|
html.append("<tr class='info'>");
|
html.append("<td>").append(shelfHoist.getNumber()).append(" ").append(shelfHoist.getState()).append("</td>");
|
|
if (shelfHoist.getRawPackage() != null) {
|
html.append("<td>").append(shelfHoist.getRawPackage().getDescription()).append("</td>");
|
html.append("<td><div class='btn-group pull-right'>");
|
html.append("<a href='/gmms2/shelfhoist/modify/").append(shelfHoist.getId()).append("' class='btn btn-middle btn-primary'>编辑吊装位</a>");
|
html.append("<a href='#' onclick='deleteHoist(").append(shelfHoist.getId()).append(")' class='btn btn-middle btn-danger'>删除吊装位</a>");
|
html.append("<a href='#' onclick='deleteRawPackageForHoist(").append(shelfHoist.getId()).append(")' class='btn btn-middle btn-danger'>删除原片</a>");
|
html.append("</div></td>");
|
}
|
else {
|
html.append("<td></td><td></td>");
|
}
|
|
html.append("</tr>");
|
}
|
}
|
|
return html.toString();
|
}
|
|
/**
|
* 得到有的料架号
|
* @return
|
*/
|
public List<String> getShelfRankNumber(){
|
List<String> strList=new ArrayList<String>();
|
List<ShelfRank> shelfRankList = shelfRankDao.findFreeRanks();
|
for(ShelfRank shelfRank : shelfRankList){
|
strList.add(shelfRank.getNumber());
|
}
|
return strList;
|
}
|
|
public void getright(String name) {
|
TestOut testOut = new TestOut(name);
|
testOut.setStart_time(new Date());
|
testOutDao.save(testOut);
|
}
|
|
public void getendtime(String name) {
|
List<TestOut> testOuts = testOutDao.findByName(name);
|
if (testOuts.size() > 0) {
|
TestOut testOut = testOuts.get(testOuts.size() - 1);
|
if (testOut.getEnd_time() != null && !testOut.getEnd_time().equals("")) {
|
TestOut test = new TestOut(name);
|
test.setStart_time(new Date());
|
testOutDao.save(test);
|
} else {
|
testOut.setEnd_time(new Date());
|
testOutDao.save(testOut);
|
}
|
} else {
|
TestOut testOut = new TestOut(name + "start");
|
testOut.setStart_time(new Date());
|
testOutDao.save(testOut);
|
}
|
|
}
|
|
/**
|
* 得到单个料架信息
|
* @return
|
*/
|
public String getShelfRankInfo(String id){
|
StringBuffer html = new StringBuffer();
|
ShelfRank rank = shelfRankDao.findOne(Long.parseLong(id));
|
RawPackage rawpackage = rank.getRawPackage();
|
LOGGER.debug("id:"+id);
|
html.append("<div class='callout callout-info'>").append("<h4>").append(id).append("号料架</h4>");
|
html.append("<p>料架状态:").append(rank.getState()).append("</p></div>");
|
html.append("<div class='box box-default'><div class='box-header with-border'><h3 class='box-title'>原片信息</h3>");
|
html.append("</div><div class='box-body' style='font-size:20px;'>");
|
if (rank.getState().equals(RackState.FREE)) {
|
html.append("<div style='margin-top:10px;'>无原片</div></div></div>");
|
}else if (rank.getState().equals(RackState.NOT_WORK)) {
|
html.append("<div style='margin-top:10px;'>此料架已禁用,无原片信息,请启用该料架!</div></div></div>");
|
}else if (rank.getState().equals(RackState.IN_WORK) ||rank.getState().equals(RackState.IN_WORKING)) {
|
if (rawpackage !=null) {
|
html.append("<div style='margin-top:10px;'>宽度: ").append(rawpackage.getWidth());
|
html.append("mm</div><div style='margin-top:10px;'>高度:").append(rawpackage.getHeight());
|
html.append("mm</div><div style='margin-top:10px;'>厚度: ").append(rawpackage.getThickness());
|
html.append("mm</div><div style='margin-top:10px;'>膜系: ").append(rawpackage.getColor()).append("</div></div></div>");
|
html.append("<div class='box box-default'><div class='box-header with-border'>");
|
html.append("<h3 class='box-title'>原片信息</h3>");
|
html.append("</div><div class='box-body' style='font-size:20px;'>");
|
html.append("<div style='margin-top:10px;'>起始片数: ").append(rawpackage.getPieces()).append("片</div>");
|
|
html.append("<div style='margin-top:10px;'>剩余片数: ").append(rawpackage.getLeftPieces()).append("片</div>");
|
html.append("<div style='margin-top:10px;'>吊装时间: ").append(rawpackage.getCreateTime()).append("</div></div></div>");
|
|
}
|
}else{
|
html.append("</div></div>");
|
}
|
return html.toString();
|
}
|
|
/**
|
* 单个料架操作信息
|
* @return
|
*/
|
public String rankUserInfo(String id){
|
StringBuffer html = new StringBuffer();
|
ShelfRank rank = shelfRankDao.findOne(Long.parseLong(id));
|
html.append("<div class='box box-default'><div class='box-header with-border'>");
|
html.append("<h3 class='box-title'>原片编辑</h3></div><div class='box-body' style='font-size:20px;'>");
|
if (rank.getState().equals(RackState.FREE)) {
|
html.append("<a href='/gmms2/rawpackage/createForEditShelfRank/").append(id).append("' class='btn btn-large btn-success' style='margin-left: 20px'>添加原片</a>");
|
html.append("<a href='/gmms2/rawpackage/enterForEditShelfRank/").append(id).append("' class='btn btn-large btn-success' style='margin-left: 20px'>进库</a>");
|
html.append("<a href='/gmms2/rawpackage/single' class='btn btn-large btn-success' style='margin-left: 20px'>退库</a>");
|
html.append("<a href='/gmms2/shelf/taboo/").append(id).append("' class='btn btn-danger btn-lg btn-large' style='margin-left: 20px'>禁用</a>");
|
}else if (rank.getState().equals(RackState.NOT_WORK)) {
|
html.append("<a href='/gmms2/shelf/noTaboo/").append(id).append("' class='btn btn-large btn-info' >料架启用</a>");
|
}else{
|
html.append("<a href='/gmms2/rawpackage/updateForEditShelfRank/").append(id).append("' class='btn btn-large btn-success' >更新原片</a>");
|
html.append("<a href='/gmms2/rawpackage/cancelAction/").append(id).append("' class='btn btn-large btn-primary' style='margin-left: 20px'>出库</a>");
|
html.append("<a href='/gmms2/rawpackage/single' class='btn btn-large btn-success' style='margin-left: 20px'>退库</a>");
|
html.append("<a href='/gmms2/shelf/taboo/").append(id).append("' class='btn btn-danger btn-lg btn-large' style='margin-left: 20px'>禁用</a>");
|
}
|
html.append("</div>");
|
return html.toString();
|
}
|
|
public void taboo(String id) {
|
ShelfRank rank = shelfRankDao.findOne(Long.parseLong(id));
|
rank.setState(RackState.NOT_WORK);
|
rank.setUsestatu(null);
|
rank.setRawPackage(null);
|
rank.setColor(null);
|
rank.setCompletePieces(null);
|
rank.setGlassId(null);
|
rank.setLength(null);
|
rank.setPieces(null);
|
rank.setPrecent(null);
|
rank.setThickness(null);
|
rank.setWidth(null);
|
rank.setCreateTime(null);
|
shelfRankDao.save(rank);
|
}
|
|
public void notaboo(String id) {
|
ShelfRank rank = shelfRankDao.findOne(Long.parseLong(id));
|
rank.setState(RackState.FREE);
|
rank.setUsestatu(null);
|
shelfRankDao.save(rank);
|
}
|
}
|