|
|
@ -11,6 +11,10 @@ import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; |
|
|
|
import org.nl.acs.device_driver.DeviceDriver; |
|
|
|
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; |
|
|
|
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; |
|
|
|
import org.nl.acs.history.ErrorUtil; |
|
|
|
import org.nl.acs.history.service.DeviceErrorLogService; |
|
|
|
import org.nl.acs.history.service.dto.DeviceErrorLogDto; |
|
|
|
import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; |
|
|
|
import org.nl.acs.log.service.LogServer; |
|
|
|
import org.nl.acs.opc.Device; |
|
|
|
import org.nl.acs.order.service.ProduceshiftorderService; |
|
|
@ -50,6 +54,9 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
@Autowired |
|
|
|
LogServer logServer = SpringContextHolder.getBean(LogServer.class); |
|
|
|
|
|
|
|
@Autowired |
|
|
|
DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); |
|
|
|
|
|
|
|
// @Autowired
|
|
|
|
// LabelingTemplateService labelingTemplateService = SpringContextHolder.getBean(LabelingTemplateService.class);
|
|
|
|
|
|
|
@ -80,7 +87,6 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
private int detail_time_out = 3000; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void execute() { |
|
|
|
String message = null; |
|
|
@ -95,38 +101,45 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
one_qty = this.itemProtocol.getOne_qty(); |
|
|
|
|
|
|
|
if (mode != last_mode) { |
|
|
|
logServer.deviceLog(this.device_code,"mode" ,String.valueOf(mode)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号mode:" + last_mode + "->" + mode); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","工作模式切换,刷新请求标记:"+this.requireSucess); |
|
|
|
logServer.deviceLog(this.device_code, "mode", String.valueOf(mode)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "工作模式切换,刷新请求标记:" + this.requireSucess); |
|
|
|
this.setRequireSucess(false); |
|
|
|
} |
|
|
|
if (move != last_move) { |
|
|
|
logServer.deviceLog(this.device_code,"move" ,String.valueOf(move)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号move:" + last_move + "->" + move); |
|
|
|
logServer.deviceLog(this.device_code, "move", String.valueOf(move)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号move:" + last_move + "->" + move); |
|
|
|
} |
|
|
|
if (error != last_error) { |
|
|
|
logServer.deviceLog(this.device_code,"error" ,String.valueOf(error)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号error:" + last_error + "->" + error); |
|
|
|
if (error != 0) { |
|
|
|
DeviceErrorLogDto dto = new DeviceErrorLogDto(); |
|
|
|
dto.setDevice_code(device_code); |
|
|
|
dto.setError_code(String.valueOf(error)); |
|
|
|
dto.setError_info(ErrorUtil.getDictDetail("error_type", String.valueOf(error))); |
|
|
|
deviceErrorLogService.create(dto); |
|
|
|
} |
|
|
|
logServer.deviceLog(this.device_code, "error", String.valueOf(error)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号error:" + last_error + "->" + error); |
|
|
|
} |
|
|
|
if (order != last_order) { |
|
|
|
logServer.deviceLog(this.device_code,"order" ,String.valueOf(order)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号order:" + last_order + "->" + order); |
|
|
|
logServer.deviceLog(this.device_code, "order", String.valueOf(order)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号order:" + last_order + "->" + order); |
|
|
|
} |
|
|
|
if (order_detail != last_order_detail) { |
|
|
|
logServer.deviceLog(this.device_code,"order_detail" ,String.valueOf(order_detail)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号order_detail:" + last_order_detail + "->" + order_detail); |
|
|
|
logServer.deviceLog(this.device_code, "order_detail", String.valueOf(order_detail)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号order_detail:" + last_order_detail + "->" + order_detail); |
|
|
|
} |
|
|
|
if (detail_qty != last_detail_qty) { |
|
|
|
logServer.deviceLog(this.device_code,"detail_qty" ,String.valueOf(detail_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号detail_qty:" + last_detail_qty + "->" + detail_qty); |
|
|
|
logServer.deviceLog(this.device_code, "detail_qty", String.valueOf(detail_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号detail_qty:" + last_detail_qty + "->" + detail_qty); |
|
|
|
} |
|
|
|
if (detail_qualified_qty != last_detail_qualified_qty) { |
|
|
|
logServer.deviceLog(this.device_code,"detail_qualified_qty" ,String.valueOf(detail_qualified_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","detail_qualified_qty:" + last_detail_qualified_qty + "->" + detail_qualified_qty); |
|
|
|
logServer.deviceLog(this.device_code, "detail_qualified_qty", String.valueOf(detail_qualified_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "detail_qualified_qty:" + last_detail_qualified_qty + "->" + detail_qualified_qty); |
|
|
|
} |
|
|
|
if (one_qty != last_one_qty) { |
|
|
|
logServer.deviceLog(this.device_code,"finish_status" ,String.valueOf(one_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","信号one_qty:" + last_one_qty + "->" + one_qty); |
|
|
|
logServer.deviceLog(this.device_code, "finish_status", String.valueOf(one_qty)); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "信号one_qty:" + last_one_qty + "->" + one_qty); |
|
|
|
} |
|
|
|
|
|
|
|
} catch (Exception var17) { |
|
|
@ -153,71 +166,71 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
//申请贴标
|
|
|
|
if(!requireSucess){ |
|
|
|
if(order > 0 && order_detail > 0 && detail_qty>0 ){ |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请贴标,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","申请贴标"); |
|
|
|
apply_labeling_message(String.valueOf(order),String.valueOf(order_detail),String.valueOf(detail_qty)); |
|
|
|
if (!requireSucess) { |
|
|
|
if (order > 0 && order_detail > 0 && detail_qty > 0) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请贴标,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "申请贴标"); |
|
|
|
apply_labeling_message(String.valueOf(order), String.valueOf(order_detail), String.valueOf(detail_qty)); |
|
|
|
} else { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请贴标失败,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请贴标失败,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
case 5: |
|
|
|
//贴标完成
|
|
|
|
if(!requireSucess){ |
|
|
|
if(order > 0 && order_detail > 0 && detail_qty>0 ){ |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请贴标完成,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
update_detail(String.valueOf(order),String.valueOf(order_detail),"01"); |
|
|
|
if (!requireSucess) { |
|
|
|
if (order > 0 && order_detail > 0 && detail_qty > 0) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请贴标完成,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
update_detail(String.valueOf(order), String.valueOf(order_detail), "01"); |
|
|
|
} else { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请贴标完成失败,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请贴标完成失败,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
case 6: |
|
|
|
//强制贴标完成
|
|
|
|
if(!requireSucess){ |
|
|
|
if( order > 0 && order_detail > 0 && detail_qty>0) { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请强制贴标完成,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
update_detail(String.valueOf(order),String.valueOf(order_detail),"02"); |
|
|
|
if (!requireSucess) { |
|
|
|
if (order > 0 && order_detail > 0 && detail_qty > 0) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请强制贴标完成,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
update_detail(String.valueOf(order), String.valueOf(order_detail), "02"); |
|
|
|
} else { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请强制贴标完成失败,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail+",detail_qty:"+detail_qty); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请强制贴标完成失败,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail + ",detail_qty:" + detail_qty); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
//工单完成
|
|
|
|
//工单完成
|
|
|
|
case 7: |
|
|
|
if(!requireSucess){ |
|
|
|
if(order > 0 && order_detail > 0 ) { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请工单完成,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail); |
|
|
|
finish_order(String.valueOf(order),String.valueOf(order_detail),"01"); |
|
|
|
if (!requireSucess) { |
|
|
|
if (order > 0 && order_detail > 0) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请工单完成,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail); |
|
|
|
finish_order(String.valueOf(order), String.valueOf(order_detail), "01"); |
|
|
|
} else { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请工单完成失败,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请工单完成失败,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
//工单强制完成
|
|
|
|
//工单强制完成
|
|
|
|
case 8: |
|
|
|
if(!requireSucess) { |
|
|
|
if(order > 0 && order_detail > 0 ) { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请工单强制完成,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail); |
|
|
|
finish_order(String.valueOf(order),String.valueOf(order_detail),"02"); |
|
|
|
if (!requireSucess) { |
|
|
|
if (order > 0 && order_detail > 0) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请工单强制完成,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail); |
|
|
|
finish_order(String.valueOf(order), String.valueOf(order_detail), "02"); |
|
|
|
} else { |
|
|
|
logServer.deviceLogToacs(this.device_code,"","",device_code+":申请工单强制完成失败,mode:"+mode+",requireSucess:" + requireSucess + ",order:" + order +",order_detail:" |
|
|
|
+order_detail); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", device_code + ":申请工单强制完成失败,mode:" + mode + ",requireSucess:" + requireSucess + ",order:" + order + ",order_detail:" |
|
|
|
+ order_detail); |
|
|
|
} |
|
|
|
} |
|
|
|
break; |
|
|
@ -236,7 +249,7 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public synchronized boolean update_detail(String order, String order_detail,String status) { |
|
|
|
public synchronized boolean update_detail(String order, String order_detail, String status) { |
|
|
|
Date date = new Date(); |
|
|
|
if (date.getTime() - this.detail_time_out < (long) this.detail_time_out) { |
|
|
|
log.trace("触发时间因为小于{}毫秒,而被无视", this.detail_time_out); |
|
|
@ -253,37 +266,37 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
dto.setLabeling_finish_time(now); |
|
|
|
dto.setOrder_detail_status("08"); |
|
|
|
produceshiftorderdetailService.update(dto); |
|
|
|
writing(itemProtocol.item_to_command,String.valueOf(mode)); |
|
|
|
writing(itemProtocol.item_to_command, String.valueOf(mode)); |
|
|
|
requireSucess = true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public synchronized boolean finish_order(String order, String order_detail,String status) { |
|
|
|
public synchronized boolean finish_order(String order, String order_detail, String status) { |
|
|
|
Date date = new Date(); |
|
|
|
if (date.getTime() - this.detail_time_out < (long) this.detail_time_out) { |
|
|
|
log.trace("触发时间因为小于{}毫秒,而被无视", this.detail_time_out); |
|
|
|
return false; |
|
|
|
} else { |
|
|
|
ProduceshiftorderDto dto = produceshiftorderService.findOrderByOrderCodeFromCache(String.valueOf(order)); |
|
|
|
if(ObjectUtil.isEmpty(dto)){ |
|
|
|
if (ObjectUtil.isEmpty(dto)) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(!StrUtil.equals(dto.getOrder_status(),status)){ |
|
|
|
if(StrUtil.equals(status,"1")){ |
|
|
|
if (!StrUtil.equals(dto.getOrder_status(), status)) { |
|
|
|
if (StrUtil.equals(status, "1")) { |
|
|
|
dto.setOrder_status("07"); |
|
|
|
} else { |
|
|
|
dto.setOrder_status("08"); |
|
|
|
} |
|
|
|
produceshiftorderService.autoupdate(dto); |
|
|
|
} |
|
|
|
writing(itemProtocol.item_to_command,String.valueOf(mode)); |
|
|
|
writing(itemProtocol.item_to_command, String.valueOf(mode)); |
|
|
|
requireSucess = true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public synchronized boolean apply_labeling_message(String order, String order_detail,String qty) { |
|
|
|
public synchronized boolean apply_labeling_message(String order, String order_detail, String qty) { |
|
|
|
Date date = new Date(); |
|
|
|
if (date.getTime() - this.detail_time_out < (long) this.detail_time_out) { |
|
|
|
log.trace("触发时间因为小于{}毫秒,而被无视", this.detail_time_out); |
|
|
@ -292,7 +305,7 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
this.detail_time = date; |
|
|
|
ProduceshiftorderDto dto = produceshiftorderService.findOrderByOrderCodeFromCache(String.valueOf(order)); |
|
|
|
ProduceshiftorderdetailDto detaildto = produceshiftorderdetailService.findOrderDetailFromCache(String.valueOf(order), String.valueOf(order_detail)); |
|
|
|
if(ObjectUtil.isEmpty(dto)){ |
|
|
|
if (ObjectUtil.isEmpty(dto)) { |
|
|
|
throw new BadRequestException("未找到可下发工单明细!"); |
|
|
|
} |
|
|
|
Boolean flag = false; |
|
|
@ -301,34 +314,34 @@ public class HaiLiangLabelingDeviceDriver extends AbstractOpcDeviceDriver implem |
|
|
|
|
|
|
|
//labelingTemplateService.printMessage(dto,qty);
|
|
|
|
String path = jsonStor.getString("path"); |
|
|
|
String pathName = "E:\\work\\"+jsonStor.getString("name")+ jsonStor.getString("storage_id") + ".xlsx"; |
|
|
|
String pathName = "E:\\work\\" + jsonStor.getString("name") + jsonStor.getString("storage_id") + ".xlsx"; |
|
|
|
|
|
|
|
|
|
|
|
JSONObject jo = new JSONObject(); |
|
|
|
jo.put("order_id",dto.getOrder_id()); |
|
|
|
jo.put("template_id",detaildto.getTemplate_id()); |
|
|
|
jo.put("path",path); |
|
|
|
jo.put("url",pathName); |
|
|
|
jo.put("alloy",dto.getAlloy()); |
|
|
|
jo.put("temper",dto.getTemper()); |
|
|
|
jo.put("material_spec",dto.getMaterial_spec()); |
|
|
|
jo.put("number",String.valueOf(one_qty)); |
|
|
|
jo.put("outer_diameter",dto.getOuter_diameter()); |
|
|
|
jo.put("standard",detaildto.getStandard()); |
|
|
|
jo.put("batch",detaildto.getBatch()); |
|
|
|
jo.put("prod_date",detaildto.getProd_date()); |
|
|
|
jo.put("present_strap_pack_number",String.valueOf(labeling_index)); |
|
|
|
jo.put("inspector",detaildto.getInspector()); |
|
|
|
jo.put("mg_weight",detaildto.getMg_weight()); |
|
|
|
jo.put("order_id", dto.getOrder_id()); |
|
|
|
jo.put("template_id", detaildto.getTemplate_id()); |
|
|
|
jo.put("path", path); |
|
|
|
jo.put("url", pathName); |
|
|
|
jo.put("alloy", dto.getAlloy()); |
|
|
|
jo.put("temper", dto.getTemper()); |
|
|
|
jo.put("material_spec", dto.getMaterial_spec()); |
|
|
|
jo.put("number", String.valueOf(one_qty)); |
|
|
|
jo.put("outer_diameter", dto.getOuter_diameter()); |
|
|
|
jo.put("standard", detaildto.getStandard()); |
|
|
|
jo.put("batch", detaildto.getBatch()); |
|
|
|
jo.put("prod_date", detaildto.getProd_date()); |
|
|
|
jo.put("present_strap_pack_number", String.valueOf(labeling_index)); |
|
|
|
jo.put("inspector", detaildto.getInspector()); |
|
|
|
jo.put("mg_weight", detaildto.getMg_weight()); |
|
|
|
//打印纸张大小
|
|
|
|
jo.put("page_length","600"); |
|
|
|
jo.put("page_height","400"); |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","申请贴标接口信息:"+jo.toString()); |
|
|
|
jo.put("page_length", "600"); |
|
|
|
jo.put("page_height", "400"); |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "申请贴标接口信息:" + jo.toString()); |
|
|
|
|
|
|
|
flag = produceshiftorderService.print(jo); |
|
|
|
if(flag){ |
|
|
|
logServer.deviceLogToacs(this.device_code,"","","下发贴标信息成功"); |
|
|
|
writing(itemProtocol.item_to_command,String.valueOf(mode)); |
|
|
|
if (flag) { |
|
|
|
logServer.deviceLogToacs(this.device_code, "", "", "下发贴标信息成功"); |
|
|
|
writing(itemProtocol.item_to_command, String.valueOf(mode)); |
|
|
|
requireSucess = true; |
|
|
|
return true; |
|
|
|
} else { |
|
|
|