PLC增加调度

master
erzhongxmu 2022-11-24 22:13:05 +08:00
parent c8c3f53ba5
commit 54720c6251
3 changed files with 505 additions and 481 deletions

View File

@ -310,12 +310,12 @@ public class MdBinController extends BaseController {
String endcom = req.getParameter("endcom"); String endcom = req.getParameter("endcom");
if ("diaodu".equals(type)) {//调度需要方式指令 if ("diaodu".equals(type)) {//调度需要方式指令
// 异步发送指令 // 异步发送指令
if(StringUtil.isEmpty(binFrom)){ if (StringUtil.isEmpty(binFrom)) {
j.setMsg("开始储位为空"); j.setMsg("开始储位为空");
j.setSuccess(false); j.setSuccess(false);
return j; return j;
} }
if(StringUtil.isEmpty(binTo)){ if (StringUtil.isEmpty(binTo)) {
j.setMsg("结束储位为空"); j.setMsg("结束储位为空");
j.setSuccess(false); j.setSuccess(false);
return j; return j;
@ -324,7 +324,8 @@ public class MdBinController extends BaseController {
executor.execute(new Runnable() { executor.execute(new Runnable() {
@Override @Override
public void run() { public void run() {
runagv(binFrom, binTo,startcom,midcom,endcom);
runagv(binFrom, binTo, startcom, midcom, endcom, type);
} }
}); });
} catch (Exception e) { } catch (Exception e) {
@ -406,39 +407,38 @@ public class MdBinController extends BaseController {
return j; return j;
} }
public void runagv(String binfrom, String binto, String startcom, String midcom, String endcom) { public void runagv(String binfrom, String binto, String startcom, String midcom, String endcom, String type) {
if ("diaodu".equals(type)) {
List<MdBinEntity> mdblistfrom = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binfrom);
List<MdBinEntity> mdblistto = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binto);
MdBinEntity mdBinEntityfrom = mdblistfrom.get(0);
MdBinEntity mdBinEntityto = mdblistto.get(0);
String x0 = mdBinEntityfrom.getXnode();
String x1 = mdBinEntityto.getXnode();
int xStep = Integer.parseInt(x1) - Integer.parseInt(x0);
String y0 = mdBinEntityfrom.getYnode();
String y1 = mdBinEntityto.getYnode();
int yStep = Integer.parseInt(y1) - Integer.parseInt(y0);
String xstepNum = "1";
String ystepNum = "1";
String hxstepNum = "1";
xstepNum = Integer.toString(xStep);
ystepNum = Integer.toString(yStep);
if (!"no".equals(startcom) && StringUtil.isNotEmpty(startcom)) {
hxstepNum = "1";
System.out.println("startcom,startcom:" + startcom);
wmsPlcController.run("", startcom, hxstepNum);
}
List<MdBinEntity> mdblistfrom = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binfrom); if (y0.equals("01")) {
List<MdBinEntity> mdblistto = systemService.findByProperty(MdBinEntity.class, "kuWeiBianMa", binto); System.out.println("1,runx:" + xstepNum);
MdBinEntity mdBinEntityfrom = mdblistfrom.get(0); wmsPlcController.run("", "runx", xstepNum);
MdBinEntity mdBinEntityto = mdblistto.get(0); } else {
String x0 = mdBinEntityfrom.getXnode(); System.out.println("2,runy:" + ystepNum);
String x1 = mdBinEntityto.getXnode();
int xStep = Integer.parseInt(x1) - Integer.parseInt(x0) ;
String y0 = mdBinEntityfrom.getYnode();
String y1 = mdBinEntityto.getYnode();
int yStep = Integer.parseInt(y1) - Integer.parseInt(y0) ;
String xstepNum = "1";
String ystepNum = "1";
String hxstepNum = "1";
xstepNum = Integer.toString(xStep);
ystepNum = Integer.toString(yStep);
if(!"no".equals(startcom)&&StringUtil.isNotEmpty(startcom)){
hxstepNum = "1";
System.out.println("startcom,startcom:"+startcom);
wmsPlcController.run("",startcom,hxstepNum);
}
wmsPlcController.run("", "runy", ystepNum);
if(y0.equals("01")){ }
System.out.println("1,runx:"+xstepNum);
wmsPlcController.run("","runx",xstepNum);
}else{
System.out.println("2,runy:"+ystepNum);
wmsPlcController.run("","runy",ystepNum);
}
// if(xStep>0 && yStep>0){ // if(xStep>0 && yStep>0){
@ -447,24 +447,28 @@ public class MdBinController extends BaseController {
// //
// wmsPlcController.run("","change",hxstepNum); // wmsPlcController.run("","change",hxstepNum);
// } // }
if(!"no".equals(midcom)&&StringUtil.isNotEmpty(midcom)){ if (!"no".equals(midcom) && StringUtil.isNotEmpty(midcom)) {
hxstepNum = "1"; hxstepNum = "1";
System.out.println("midcom,midcom:"+midcom); System.out.println("midcom,midcom:" + midcom);
wmsPlcController.run("",midcom,hxstepNum); wmsPlcController.run("", midcom, hxstepNum);
} }
if(y0.equals("01")){ if (y0.equals("01")) {
System.out.println("4,runy:"+ystepNum); System.out.println("4,runy:" + ystepNum);
wmsPlcController.run("","runy",ystepNum); wmsPlcController.run("", "runy", ystepNum);
}else{ } else {
System.out.println("5,runx:"+xstepNum); System.out.println("5,runx:" + xstepNum);
wmsPlcController.run("", "runx", xstepNum);
}
if (!"no".equals(endcom) && StringUtil.isNotEmpty(endcom)) {
hxstepNum = "1";
System.out.println("endcom,endcom:" + endcom);
wmsPlcController.run("", endcom, hxstepNum);
}
} else {
wmsPlcController.runu();
wmsPlcController.run("","runx",xstepNum);
}
if(!"no".equals(endcom)&&StringUtil.isNotEmpty(endcom)){
hxstepNum = "1";
System.out.println("endcom,endcom:"+endcom);
wmsPlcController.run("",endcom,hxstepNum);
} }
} }

View File

@ -1,9 +1,11 @@
package com.zzjee.plc.controller; package com.zzjee.plc.controller;
import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net; import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.zzjee.plc.entity.WmsPlcEntity; import com.zzjee.plc.entity.WmsPlcEntity;
import com.zzjee.plc.service.WmsPlcServiceI; import com.zzjee.plc.service.WmsPlcServiceI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -35,6 +37,7 @@ import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.MyBeanUtils;
import java.io.OutputStream; import java.io.OutputStream;
import org.jeecgframework.core.util.BrowserUtils; import org.jeecgframework.core.util.BrowserUtils;
import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
@ -45,12 +48,16 @@ import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.vo.TemplateExcelConstants; import org.jeecgframework.poi.excel.entity.vo.TemplateExcelConstants;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.core.util.ResourceUtil;
import java.io.IOException; import java.io.IOException;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.Map; import java.util.Map;
import java.util.HashMap; import java.util.HashMap;
import org.jeecgframework.core.util.ExceptionUtil; import org.jeecgframework.core.util.ExceptionUtil;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -64,481 +71,493 @@ import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.jeecgframework.core.beanvalidator.BeanValidators; import org.jeecgframework.core.beanvalidator.BeanValidators;
import java.util.Set; import java.util.Set;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import javax.validation.Validator; import javax.validation.Validator;
import java.net.URI; import java.net.URI;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
/** /**
* @author onlineGenerator
* @version V1.0
* @Title: Controller * @Title: Controller
* @Description: PLC * @Description: PLC
* @author onlineGenerator
* @date 2022-09-12 18:33:25 * @date 2022-09-12 18:33:25
* @version V1.0
*
*/ */
@Controller @Controller
@RequestMapping("/wmsPlcController") @RequestMapping("/wmsPlcController")
public class WmsPlcController extends BaseController { public class WmsPlcController extends BaseController {
/** /**
* Logger for this class * Logger for this class
*/ */
private static final Logger logger = Logger.getLogger(WmsPlcController.class); private static final Logger logger = Logger.getLogger(WmsPlcController.class);
@Autowired @Autowired
private WmsPlcServiceI wmsPlcService; private WmsPlcServiceI wmsPlcService;
@Autowired @Autowired
private SystemService systemService; private SystemService systemService;
@Autowired @Autowired
private Validator validator; private Validator validator;
/**
* PLC
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("com/zzjee/plc/wmsPlcList");
}
/** /**
* PLC * easyui AJAX
* *
* @return * @param request
*/ * @param response
@RequestMapping(params = "list") * @param dataGrid
public ModelAndView list(HttpServletRequest request) { */
return new ModelAndView("com/zzjee/plc/wmsPlcList");
}
/** @RequestMapping(params = "datagrid")
* easyui AJAX public void datagrid(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
* CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid);
* @param request //查询条件组装器
* @param response org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap());
* @param dataGrid try {
*/ //自定义追加查询条件
} catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.wmsPlcService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
@RequestMapping(params = "datagrid") /**
public void datagrid(WmsPlcEntity wmsPlc,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { * PLC
CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid); *
//查询条件组装器 * @return
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap()); */
try{ @RequestMapping(params = "doDel")
//自定义追加查询条件 @ResponseBody
}catch (Exception e) { public AjaxJson doDel(WmsPlcEntity wmsPlc, HttpServletRequest request) {
throw new BusinessException(e.getMessage()); String message = null;
} AjaxJson j = new AjaxJson();
cq.add(); wmsPlc = systemService.getEntity(WmsPlcEntity.class, wmsPlc.getId());
this.wmsPlcService.getDataGridReturn(cq, true); message = "PLC指令删除成功";
TagUtil.datagrid(response, dataGrid); try {
} wmsPlcService.delete(wmsPlc);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令删除失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/** /**
* PLC * PLC
* *
* @return * @return
*/ */
@RequestMapping(params = "doDel") @RequestMapping(params = "dotoup")
@ResponseBody @ResponseBody
public AjaxJson doDel(WmsPlcEntity wmsPlc, HttpServletRequest request) { public AjaxJson dotoup(String ids, HttpServletRequest request) {
String message = null; String message = null;
AjaxJson j = new AjaxJson(); AjaxJson j = new AjaxJson();
wmsPlc = systemService.getEntity(WmsPlcEntity.class, wmsPlc.getId()); message = "PLC指令执行成功";
message = "PLC指令删除成功"; try {
try{ for (String id : ids.split(",")) {
wmsPlcService.delete(wmsPlc); run(id, "", "");
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }
}catch(Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
message = "PLC指令删除失败"; message = "PLC指令执行失败";
throw new BusinessException(e.getMessage()); throw new BusinessException(e.getMessage());
} }
j.setMsg(message); j.setMsg(message);
return j; return j;
} }
public void runu() {
WmsPlcEntity wmsPlc = null;
String hql = "";
List<WmsPlcEntity> wmsPlcEntityList = new ArrayList<WmsPlcEntity>();
hql = "from WmsPlcEntity t where t.comNo = ? ";
wmsPlcEntityList = systemService.findHql(hql, "runu");
if (!CollectionUtils.isEmpty(wmsPlcEntityList)) {
wmsPlc = wmsPlcEntityList.get(0);
}
String[] coms = wmsPlc.getComCons().split(";");
for (String com : coms) {
String comid[] = com.split(",");
String comno = comid[0];
String comstep = comid[1];
run("", comno, comstep);
}
/** }
* PLC public void run(String id, String comNo, String stepNum) {
* System.out.println("id:" + id + ";comNo:" + comNo + ";stepNum:" + stepNum);
* @return if (stepNum.equals("0")) {
*/ return;
@RequestMapping(params = "dotoup") }
@ResponseBody WmsPlcEntity wmsPlc = null;
public AjaxJson dotoup(String ids,HttpServletRequest request){ if (StringUtil.isNotEmpty(id)) {
String message = null; wmsPlc = systemService.getEntity(WmsPlcEntity.class, id);
AjaxJson j = new AjaxJson(); }
message = "PLC指令执行成功"; if (StringUtil.isNotEmpty(comNo)) {
try{
for(String id:ids.split(",")){ String hql = "";
run(id,"",""); List<WmsPlcEntity> wmsPlcEntityList = new ArrayList<WmsPlcEntity>();
} hql = "from WmsPlcEntity t where t.comNo = ? ";
}catch(Exception e){ wmsPlcEntityList = systemService.findHql(hql, comNo);
e.printStackTrace(); if (!CollectionUtils.isEmpty(wmsPlcEntityList)) {
message = "PLC指令执行失败"; wmsPlc = wmsPlcEntityList.get(0);
throw new BusinessException(e.getMessage()); }
} }
j.setMsg(message); if (wmsPlc != null) {
return j; long start = System.currentTimeMillis();
}
SiemensPLCS siemensPLCS = SiemensPLCS.S200Smart;
SiemensS7Net siemensS7Net = null;
siemensS7Net = new SiemensS7Net(siemensPLCS);
siemensS7Net.setIpAddress(wmsPlc.getPlcIp());
siemensS7Net.setPort(Integer.parseInt(wmsPlc.getPlcPort()));
OperateResult connect = siemensS7Net.ConnectServer();
if (connect.IsSuccess) {
System.out.println("connect success");
} else {
System.out.println("connect error");
try {
siemensS7Net.ConnectClose();
} catch (Exception e) {
e.printStackTrace();
}
}
String comCons = wmsPlc.getComCons();
String query01 = wmsPlc.getQuery01();
String query02 = wmsPlc.getQuery02();
Float stepNumrun = Float.valueOf("1");
if (StringUtil.isNotEmpty(stepNum)) {
stepNumrun = Float.parseFloat(stepNum);
} else {
stepNumrun = Float.parseFloat(wmsPlc.getSetpNum());
}
Float stepTime = Float.parseFloat(wmsPlc.getSetpTime());
comCons = StringUtils.replace(comCons, "{query01}", query01);
comCons = StringUtils.replace(comCons, "{query02}", query02);
String[] coms = comCons.split(";");
for (String com : coms) {
System.out.println("指令:" + com);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
String[] split = com.split(",");
String defaultAddress = split[1];
if (split[0].equals("boolean")) {
if (split[2].equals("false")) {
siemensS7Net.Write(defaultAddress, false);
} else {
siemensS7Net.Write(defaultAddress, true);
}
} else if (split[0].equals("float")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat" + Math.abs(runfloat));
siemensS7Net.Write(defaultAddress, Math.abs(runfloat));
} else if (split[0].equals("-float")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat" + runfloat);
siemensS7Net.Write(defaultAddress, runfloat);
} else if (split[0].equals("int")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
Float abs = Math.abs(runfloat);
int runint = abs.intValue();
System.out.println("runint" + runint);
siemensS7Net.Write(defaultAddress, runint);
} else if (split[0].equals("-int")) {
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
int runint = runfloat.intValue();
System.out.println("runint" + runint);
siemensS7Net.Write(defaultAddress, runint);
}
}
//执行完指令等待时间
try {
Float sleeptime = Math.abs(stepNumrun * stepTime);
Thread.sleep(sleeptime.longValue());
} catch (Exception e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
long times = end - start;
org.jeecgframework.core.util.LogUtil.info(wmsPlc.getComRemark() + "总耗时" + times + "毫秒" + comCons);
}
public void run(String id,String comNo,String stepNum){ }
/**
* PLC
*
* @return
*/
@RequestMapping(params = "doBatchDel")
@ResponseBody
public AjaxJson doBatchDel(String ids, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "PLC指令删除成功";
try {
for (String id : ids.split(",")) {
WmsPlcEntity wmsPlc = systemService.getEntity(WmsPlcEntity.class,
id
);
wmsPlcService.delete(wmsPlc);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令删除失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
System.out.println("id:"+id+";comNo:"+comNo+";stepNum:"+stepNum); /**
if(stepNum.equals("0")){ * PLC
return; *
} * @return
WmsPlcEntity wmsPlc = null ; */
if(StringUtil.isNotEmpty(id)){ @RequestMapping(params = "doAdd")
wmsPlc = systemService.getEntity(WmsPlcEntity.class,id); @ResponseBody
} public AjaxJson doAdd(WmsPlcEntity wmsPlc, HttpServletRequest request) {
if(StringUtil.isNotEmpty(comNo)){ String message = null;
AjaxJson j = new AjaxJson();
message = "PLC指令添加成功";
try {
wmsPlcService.save(wmsPlc);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令添加失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
String hql = ""; /**
List<WmsPlcEntity> wmsPlcEntityList = new ArrayList<WmsPlcEntity>(); * PLC
hql = "from WmsPlcEntity t where t.comNo = ? "; *
wmsPlcEntityList = systemService.findHql(hql,comNo); * @return
if(!CollectionUtils.isEmpty(wmsPlcEntityList)){ */
wmsPlc = wmsPlcEntityList.get(0); @RequestMapping(params = "doUpdate")
} @ResponseBody
} public AjaxJson doUpdate(WmsPlcEntity wmsPlc, HttpServletRequest request) {
if(wmsPlc != null){ String message = null;
long start = System.currentTimeMillis(); AjaxJson j = new AjaxJson();
message = "PLC指令更新成功";
SiemensPLCS siemensPLCS = SiemensPLCS.S200Smart; WmsPlcEntity t = wmsPlcService.get(WmsPlcEntity.class, wmsPlc.getId());
SiemensS7Net siemensS7Net = null; try {
siemensS7Net = new SiemensS7Net(siemensPLCS); MyBeanUtils.copyBeanNotNull2Bean(wmsPlc, t);
siemensS7Net.setIpAddress(wmsPlc.getPlcIp()); wmsPlcService.saveOrUpdate(t);
siemensS7Net.setPort(Integer.parseInt(wmsPlc.getPlcPort()) ); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
OperateResult connect = siemensS7Net.ConnectServer(); } catch (Exception e) {
if(connect.IsSuccess){ e.printStackTrace();
System.out.println("connect success"); message = "PLC指令更新失败";
}else{ throw new BusinessException(e.getMessage());
System.out.println("connect error"); }
try{ j.setMsg(message);
siemensS7Net.ConnectClose(); return j;
}catch (Exception e){ }
e.printStackTrace();
}
}
String comCons = wmsPlc.getComCons();
String query01 = wmsPlc.getQuery01();
String query02 = wmsPlc.getQuery02();
Float stepNumrun = Float.valueOf("1");
if(StringUtil.isNotEmpty(stepNum)){
stepNumrun =Float.parseFloat(stepNum);
}else{
stepNumrun =Float.parseFloat(wmsPlc.getSetpNum());
}
Float stepTime = Float.parseFloat(wmsPlc.getSetpTime());
comCons = StringUtils.replace(comCons,"{query01}",query01);
comCons = StringUtils.replace(comCons,"{query02}",query02);
String[] coms = comCons.split(";");
for (String com : coms) {
System.out.println("指令:"+com);
try {
Thread.sleep(500);
}catch (Exception e){
e.printStackTrace();
}
String[] split = com.split(",");
String defaultAddress = split[1];
if(split[0].equals("boolean")){
if(split[2].equals("false")){
siemensS7Net.Write(defaultAddress,false);
}else{
siemensS7Net.Write(defaultAddress,true);
}
}
else if(split[0].equals("float")){
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat"+Math.abs(runfloat));
siemensS7Net.Write(defaultAddress,Math.abs(runfloat));
}
else if(split[0].equals("-float")){
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
System.out.println("runfloat"+runfloat);
siemensS7Net.Write(defaultAddress,runfloat);
}
else if(split[0].equals("int")){
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
Float abs = Math.abs(runfloat);
int runint = abs.intValue();
System.out.println("runint"+runint);
siemensS7Net.Write(defaultAddress,runint);
}
else if(split[0].equals("-int")){
Float runfloat = Float.parseFloat(split[2]) * stepNumrun;
int runint = runfloat.intValue();
System.out.println("runint"+runint);
siemensS7Net.Write(defaultAddress,runint);
}
}
//执行完指令等待时间
try{
Float sleeptime = Math.abs(stepNumrun * stepTime) ;
Thread.sleep(sleeptime.longValue());
}catch (Exception e){
e.printStackTrace();
}
long end = System.currentTimeMillis();
long times = end - start;
org.jeecgframework.core.util.LogUtil.info(wmsPlc.getComRemark()+"总耗时" + times + "毫秒"+comCons);
}
/**
* PLC
*
* @return
*/
@RequestMapping(params = "goAdd")
public ModelAndView goAdd(WmsPlcEntity wmsPlc, HttpServletRequest req) {
if (StringUtil.isNotEmpty(wmsPlc.getId())) {
wmsPlc = wmsPlcService.getEntity(WmsPlcEntity.class, wmsPlc.getId());
req.setAttribute("wmsPlcPage", wmsPlc);
}
return new ModelAndView("com/zzjee/plc/wmsPlc-add");
}
} /**
/** * PLC
* PLC *
* * @return
* @return */
*/ @RequestMapping(params = "goUpdate")
@RequestMapping(params = "doBatchDel") public ModelAndView goUpdate(WmsPlcEntity wmsPlc, HttpServletRequest req) {
@ResponseBody if (StringUtil.isNotEmpty(wmsPlc.getId())) {
public AjaxJson doBatchDel(String ids,HttpServletRequest request){ wmsPlc = wmsPlcService.getEntity(WmsPlcEntity.class, wmsPlc.getId());
String message = null; req.setAttribute("wmsPlcPage", wmsPlc);
AjaxJson j = new AjaxJson(); }
message = "PLC指令删除成功"; return new ModelAndView("com/zzjee/plc/wmsPlc-update");
try{ }
for(String id:ids.split(",")){
WmsPlcEntity wmsPlc = systemService.getEntity(WmsPlcEntity.class,
id
);
wmsPlcService.delete(wmsPlc);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}
}catch(Exception e){
e.printStackTrace();
message = "PLC指令删除失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name", "wmsPlcController");
return new ModelAndView("common/upload/pub_excel_upload");
}
/** /**
* PLC * excel
* *
* @return * @param request
*/ * @param response
@RequestMapping(params = "doAdd") */
@ResponseBody @RequestMapping(params = "exportXls")
public AjaxJson doAdd(WmsPlcEntity wmsPlc, HttpServletRequest request) { public String exportXls(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response
String message = null; , DataGrid dataGrid, ModelMap modelMap) {
AjaxJson j = new AjaxJson(); CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid);
message = "PLC指令添加成功"; org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap());
try{ List<WmsPlcEntity> wmsPlcs = this.wmsPlcService.getListByCriteriaQuery(cq, false);
wmsPlcService.save(wmsPlc); modelMap.put(NormalExcelConstants.FILE_NAME, "PLC指令");
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); modelMap.put(NormalExcelConstants.CLASS, WmsPlcEntity.class);
}catch(Exception e){ modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("PLC指令列表", "导出人:" + ResourceUtil.getSessionUserName().getRealName(),
e.printStackTrace(); "导出信息"));
message = "PLC指令添加失败"; modelMap.put(NormalExcelConstants.DATA_LIST, wmsPlcs);
throw new BusinessException(e.getMessage()); return NormalExcelConstants.JEECG_EXCEL_VIEW;
} }
j.setMsg(message);
return j;
}
/** /**
* PLC * excel 使
* *
* @return * @param request
*/ * @param response
@RequestMapping(params = "doUpdate") */
@ResponseBody @RequestMapping(params = "exportXlsByT")
public AjaxJson doUpdate(WmsPlcEntity wmsPlc, HttpServletRequest request) { public String exportXlsByT(WmsPlcEntity wmsPlc, HttpServletRequest request, HttpServletResponse response
String message = null; , DataGrid dataGrid, ModelMap modelMap) {
AjaxJson j = new AjaxJson(); modelMap.put(NormalExcelConstants.FILE_NAME, "PLC指令");
message = "PLC指令更新成功"; modelMap.put(NormalExcelConstants.CLASS, WmsPlcEntity.class);
WmsPlcEntity t = wmsPlcService.get(WmsPlcEntity.class, wmsPlc.getId()); modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("PLC指令列表", "导出人:" + ResourceUtil.getSessionUserName().getRealName(),
try { "导出信息"));
MyBeanUtils.copyBeanNotNull2Bean(wmsPlc, t); modelMap.put(NormalExcelConstants.DATA_LIST, new ArrayList());
wmsPlcService.saveOrUpdate(t); return NormalExcelConstants.JEECG_EXCEL_VIEW;
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); }
} catch (Exception e) {
e.printStackTrace();
message = "PLC指令更新失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
@SuppressWarnings("unchecked")
@RequestMapping(params = "importExcel", method = RequestMethod.POST)
@ResponseBody
public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
AjaxJson j = new AjaxJson();
/** MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
* PLC Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
* for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
* @return MultipartFile file = entity.getValue();// 获取上传文件对象
*/ ImportParams params = new ImportParams();
@RequestMapping(params = "goAdd") params.setTitleRows(2);
public ModelAndView goAdd(WmsPlcEntity wmsPlc, HttpServletRequest req) { params.setHeadRows(1);
if (StringUtil.isNotEmpty(wmsPlc.getId())) { params.setNeedSave(true);
wmsPlc = wmsPlcService.getEntity(WmsPlcEntity.class, wmsPlc.getId()); try {
req.setAttribute("wmsPlcPage", wmsPlc); List<WmsPlcEntity> listWmsPlcEntitys = ExcelImportUtil.importExcel(file.getInputStream(), WmsPlcEntity.class, params);
} for (WmsPlcEntity wmsPlc : listWmsPlcEntitys) {
return new ModelAndView("com/zzjee/plc/wmsPlc-add"); wmsPlcService.save(wmsPlc);
} }
/** j.setMsg("文件导入成功!");
* PLC } catch (Exception e) {
* j.setMsg("文件导入失败!");
* @return logger.error(ExceptionUtil.getExceptionMessage(e));
*/ } finally {
@RequestMapping(params = "goUpdate") try {
public ModelAndView goUpdate(WmsPlcEntity wmsPlc, HttpServletRequest req) { file.getInputStream().close();
if (StringUtil.isNotEmpty(wmsPlc.getId())) { } catch (IOException e) {
wmsPlc = wmsPlcService.getEntity(WmsPlcEntity.class, wmsPlc.getId()); e.printStackTrace();
req.setAttribute("wmsPlcPage", wmsPlc); }
} }
return new ModelAndView("com/zzjee/plc/wmsPlc-update"); }
} return j;
}
/** @RequestMapping(method = RequestMethod.GET)
* @ResponseBody
* public List<WmsPlcEntity> list() {
* @return List<WmsPlcEntity> listWmsPlcs = wmsPlcService.getList(WmsPlcEntity.class);
*/ return listWmsPlcs;
@RequestMapping(params = "upload") }
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","wmsPlcController");
return new ModelAndView("common/upload/pub_excel_upload");
}
/** @RequestMapping(value = "/{id}", method = RequestMethod.GET)
* excel @ResponseBody
* public ResponseEntity<?> get(@PathVariable("id") String id) {
* @param request WmsPlcEntity task = wmsPlcService.get(WmsPlcEntity.class, id);
* @param response if (task == null) {
*/ return new ResponseEntity(HttpStatus.NOT_FOUND);
@RequestMapping(params = "exportXls") }
public String exportXls(WmsPlcEntity wmsPlc,HttpServletRequest request,HttpServletResponse response return new ResponseEntity(task, HttpStatus.OK);
, DataGrid dataGrid,ModelMap modelMap) { }
CriteriaQuery cq = new CriteriaQuery(WmsPlcEntity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, wmsPlc, request.getParameterMap());
List<WmsPlcEntity> wmsPlcs = this.wmsPlcService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"PLC指令");
modelMap.put(NormalExcelConstants.CLASS,WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("PLC指令列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,wmsPlcs);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(WmsPlcEntity wmsPlc,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"PLC指令");
modelMap.put(NormalExcelConstants.CLASS,WmsPlcEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("PLC指令列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
@SuppressWarnings("unchecked") @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody
@ResponseBody public ResponseEntity<?> create(@RequestBody WmsPlcEntity wmsPlc, UriComponentsBuilder uriBuilder) {
public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { //调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
AjaxJson j = new AjaxJson(); Set<ConstraintViolation<WmsPlcEntity>> failures = validator.validate(wmsPlc);
if (!failures.isEmpty()) {
return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; //保存
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); try {
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { wmsPlcService.save(wmsPlc);
MultipartFile file = entity.getValue();// 获取上传文件对象 } catch (Exception e) {
ImportParams params = new ImportParams(); e.printStackTrace();
params.setTitleRows(2); return new ResponseEntity(HttpStatus.NO_CONTENT);
params.setHeadRows(1); }
params.setNeedSave(true); //按照Restful风格约定创建指向新任务的url, 也可以直接返回id或对象.
try { String id = wmsPlc.getId();
List<WmsPlcEntity> listWmsPlcEntitys = ExcelImportUtil.importExcel(file.getInputStream(),WmsPlcEntity.class,params); URI uri = uriBuilder.path("/rest/wmsPlcController/" + id).build().toUri();
for (WmsPlcEntity wmsPlc : listWmsPlcEntitys) { HttpHeaders headers = new HttpHeaders();
wmsPlcService.save(wmsPlc); headers.setLocation(uri);
}
j.setMsg("文件导入成功!");
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return j;
}
@RequestMapping(method = RequestMethod.GET) return new ResponseEntity(headers, HttpStatus.CREATED);
@ResponseBody }
public List<WmsPlcEntity> list() {
List<WmsPlcEntity> listWmsPlcs=wmsPlcService.getList(WmsPlcEntity.class);
return listWmsPlcs;
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET) @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody public ResponseEntity<?> update(@RequestBody WmsPlcEntity wmsPlc) {
public ResponseEntity<?> get(@PathVariable("id") String id) { //调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
WmsPlcEntity task = wmsPlcService.get(WmsPlcEntity.class, id); Set<ConstraintViolation<WmsPlcEntity>> failures = validator.validate(wmsPlc);
if (task == null) { if (!failures.isEmpty()) {
return new ResponseEntity(HttpStatus.NOT_FOUND); return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
} }
return new ResponseEntity(task, HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) //保存
@ResponseBody try {
public ResponseEntity<?> create(@RequestBody WmsPlcEntity wmsPlc, UriComponentsBuilder uriBuilder) { wmsPlcService.saveOrUpdate(wmsPlc);
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息. } catch (Exception e) {
Set<ConstraintViolation<WmsPlcEntity>> failures = validator.validate(wmsPlc); e.printStackTrace();
if (!failures.isEmpty()) { return new ResponseEntity(HttpStatus.NO_CONTENT);
return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); }
}
//保存 //按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
try{ return new ResponseEntity(HttpStatus.NO_CONTENT);
wmsPlcService.save(wmsPlc); }
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
//按照Restful风格约定创建指向新任务的url, 也可以直接返回id或对象.
String id = wmsPlc.getId();
URI uri = uriBuilder.path("/rest/wmsPlcController/" + id).build().toUri();
HttpHeaders headers = new HttpHeaders();
headers.setLocation(uri);
return new ResponseEntity(headers, HttpStatus.CREATED); @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
} @ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable("id") String id) {
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) wmsPlcService.deleteEntityById(WmsPlcEntity.class, id);
public ResponseEntity<?> update(@RequestBody WmsPlcEntity wmsPlc) { }
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<WmsPlcEntity>> failures = validator.validate(wmsPlc);
if (!failures.isEmpty()) {
return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
}
//保存
try{
wmsPlcService.saveOrUpdate(wmsPlc);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
//按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@PathVariable("id") String id) {
wmsPlcService.deleteEntityById(WmsPlcEntity.class, id);
}
} }

View File

@ -54,6 +54,7 @@
<%-- <span style="vertical-align:middle;display:-moz-inline-box;display:inline-block;width: 90px;text-align:right;">--%> <%-- <span style="vertical-align:middle;display:-moz-inline-box;display:inline-block;width: 90px;text-align:right;">--%>
<button onclick="chaxun('zhengxiang')">加载储位</button> </span> <button onclick="chaxun('zhengxiang')">加载储位</button> </span>
<button onclick="chaxun('diaodu')">调度</button> </span> <button onclick="chaxun('diaodu')">调度</button> </span>
<button onclick="chaxun('diaoduu')">U型调度</button> </span>
</div> </div>