|
@ -153,8 +153,8 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i |
|
|
status = this.itemProtocol.getStatus(); |
|
|
status = this.itemProtocol.getStatus(); |
|
|
error = this.itemProtocol.getError(); |
|
|
error = this.itemProtocol.getError(); |
|
|
move = this.itemProtocol.getMove(); |
|
|
move = this.itemProtocol.getMove(); |
|
|
weight=this.itemProtocol.getWeight(); |
|
|
weight = this.itemProtocol.getWeight(); |
|
|
if(mode != last_mode){ |
|
|
if (mode != last_mode) { |
|
|
requireSucess = false; |
|
|
requireSucess = false; |
|
|
} |
|
|
} |
|
|
} catch (Exception var17) { |
|
|
} catch (Exception var17) { |
|
@ -179,8 +179,114 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i |
|
|
|
|
|
|
|
|
if (mode == 8 && move == 1 && !requireSucess) { |
|
|
if (mode == 8 && move == 1 && !requireSucess) { |
|
|
//TODO:将贴标信息下发,并反馈200
|
|
|
//TODO:将贴标信息下发,并反馈200
|
|
|
JSONObject template= ticketsMapper.template(); |
|
|
JSONObject template = ticketsMapper.template(); |
|
|
String jsonString = template.toString(); |
|
|
String jsonString = template.toString(); |
|
|
|
|
|
Tickets tickets = ticketsMapper.ticket(); |
|
|
|
|
|
//客户
|
|
|
|
|
|
String customer = tickets.getCustomer(); |
|
|
|
|
|
//纸箱装瓶数量
|
|
|
|
|
|
String carton_qty = tickets.getCarton_qty(); |
|
|
|
|
|
//计划数量
|
|
|
|
|
|
String planned_quantity = tickets.getPlanned_quantity(); |
|
|
|
|
|
//晶科每罐重量
|
|
|
|
|
|
String bottle_weight=null; |
|
|
|
|
|
Integer bottle_weight1=0; |
|
|
|
|
|
//当前纸箱完成数量
|
|
|
|
|
|
String fcarton_number = tickets.getFcarton_number(); |
|
|
|
|
|
Integer fcarton_number1 = Integer.parseInt(fcarton_number); |
|
|
|
|
|
Integer planned_quantity1 = Integer.parseInt(planned_quantity); |
|
|
|
|
|
Integer carton_qty1=Integer.parseInt(carton_qty); |
|
|
|
|
|
// Float carton_qty1 = Float.parseFloat(carton_qty);
|
|
|
|
|
|
//总纸箱数
|
|
|
|
|
|
Integer sum_carton1 = (planned_quantity1+carton_qty1-1)/carton_qty1; |
|
|
|
|
|
//总纸箱数(Integer)
|
|
|
|
|
|
//纸箱号
|
|
|
|
|
|
String carton_number = tickets.getCarton_number(); |
|
|
|
|
|
//瓶盖号
|
|
|
|
|
|
String bottle_number = tickets.getBottle_number(); |
|
|
|
|
|
//物料条码(瓶盖数据去掉后四位)
|
|
|
|
|
|
String material_number = null; |
|
|
|
|
|
//纸箱前18位
|
|
|
|
|
|
String first_number = null; |
|
|
|
|
|
//纸箱后2位
|
|
|
|
|
|
String last_number = null; |
|
|
|
|
|
String zx1= ""; |
|
|
|
|
|
String zx2= ""; |
|
|
|
|
|
Integer last_number1 = 0; |
|
|
|
|
|
//当前箱数
|
|
|
|
|
|
Integer real_carton = fcarton_number1; |
|
|
|
|
|
if (customer.contains("晶科")) { |
|
|
|
|
|
bottle_weight=tickets.getBottle_weight(); |
|
|
|
|
|
//
|
|
|
|
|
|
String last_number5=""; |
|
|
|
|
|
bottle_weight1=Integer.parseInt(bottle_weight); |
|
|
|
|
|
//物料条码(瓶盖数据去掉后四位)
|
|
|
|
|
|
material_number = bottle_number.substring(0, 19); |
|
|
|
|
|
first_number = carton_number.substring(0, 18); |
|
|
|
|
|
zx1=carton_number.substring(18, 20); |
|
|
|
|
|
zx2=carton_number.substring(20, 31); |
|
|
|
|
|
last_number = carton_number.substring(31, 33); |
|
|
|
|
|
last_number1 = Integer.parseInt(last_number); |
|
|
|
|
|
last_number1 = last_number1 - fcarton_number1; |
|
|
|
|
|
log.info("当前纸箱尾数{}",last_number1); |
|
|
|
|
|
if (last_number1 > 9) { |
|
|
|
|
|
last_number5 = String.valueOf(last_number1); |
|
|
|
|
|
} else { |
|
|
|
|
|
last_number5 = "0" + String.valueOf(last_number1); |
|
|
|
|
|
} |
|
|
|
|
|
last_number=last_number5; |
|
|
|
|
|
} |
|
|
|
|
|
//晶澳纸箱数据
|
|
|
|
|
|
String janumber = ""; |
|
|
|
|
|
if (customer.contains("晶澳")) { |
|
|
|
|
|
//纸箱前16位
|
|
|
|
|
|
first_number = carton_number.substring(0, 16); |
|
|
|
|
|
//纸箱后3位
|
|
|
|
|
|
last_number = carton_number.substring(16, 19); |
|
|
|
|
|
if (fcarton_number1 == 0) { |
|
|
|
|
|
Integer sum_number = sum_carton1 * carton_qty1; |
|
|
|
|
|
Integer last1_number1 = carton_qty1 - (sum_number - planned_quantity1); |
|
|
|
|
|
|
|
|
|
|
|
// Integer last1_number1 = Integer.valueOf(String.valueOf(last1_number));
|
|
|
|
|
|
for (Integer i = 0; i < last1_number1; i++) { |
|
|
|
|
|
Integer last_number2 = 0; |
|
|
|
|
|
last_number2 = Integer.parseInt(last_number); |
|
|
|
|
|
String last_number3 = String.valueOf(last_number2); |
|
|
|
|
|
if (last_number2 > 100) { |
|
|
|
|
|
last_number2 = (last_number2 - carton_qty1*1) + i+2; |
|
|
|
|
|
last_number3 = String.valueOf(last_number2); |
|
|
|
|
|
last_number3 = last_number3 + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
} else if (last_number2 > 10) { |
|
|
|
|
|
last_number2 = (last_number2 - carton_qty1*1) + i+2; |
|
|
|
|
|
last_number3 = last_number3 + "0" + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
} else if (last_number2 > 0) { |
|
|
|
|
|
last_number2 = (last_number2 - carton_qty1*1) + i+2; |
|
|
|
|
|
last_number3 = last_number3 + "00" + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
for (Integer i = 0; i < carton_qty1; i++) { |
|
|
|
|
|
Integer last_number2 = Integer.parseInt(last_number); |
|
|
|
|
|
last_number2=(sum_carton1-real_carton-1)*10+i+1; |
|
|
|
|
|
String last_number3 = String.valueOf(last_number2); |
|
|
|
|
|
if (last_number2 > 100) { |
|
|
|
|
|
last_number3 = last_number3 + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
}else if (last_number2 > 10) { |
|
|
|
|
|
last_number3 = last_number3 + "0" + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
} else if (last_number2 > 0) { |
|
|
|
|
|
last_number3 = last_number3 + "00" + String.valueOf(last_number2) + ",2;"; |
|
|
|
|
|
janumber=janumber+first_number+last_number3; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
// String sum_carton1=String.valueOf(sum_carton);
|
|
|
|
|
|
// String real_carton1=String.valueOf(real_carton);
|
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
// 解析外部 JSON 字符串,获取 "template" 字段的值
|
|
|
// 解析外部 JSON 字符串,获取 "template" 字段的值
|
|
|
JsonNode rootNode = objectMapper.readTree(jsonString); |
|
|
JsonNode rootNode = objectMapper.readTree(jsonString); |
|
@ -197,29 +303,74 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i |
|
|
for (int i = 0; i < printElements.size(); i++) { |
|
|
for (int i = 0; i < printElements.size(); i++) { |
|
|
JSONObject printElement = printElements.getJSONObject(i); |
|
|
JSONObject printElement = printElements.getJSONObject(i); |
|
|
JSONObject options = printElement.getJSONObject("options"); |
|
|
JSONObject options = printElement.getJSONObject("options"); |
|
|
if(options.containsKey("testData")){ |
|
|
if (options.containsKey("testData")) { |
|
|
if(options.get("testData").equals("date")){ |
|
|
if (options.get("testData").equals("date")) { |
|
|
LocalDate currentDate = LocalDate.now(); |
|
|
LocalDate currentDate = LocalDate.now(); |
|
|
options.put("title","日期: "+currentDate); |
|
|
options.put("title", "日期: " + currentDate); |
|
|
printElement.put("options",options); |
|
|
printElement.put("options", options); |
|
|
} |
|
|
} |
|
|
if(options.get("testData").equals("weight")){ |
|
|
if (options.get("testData").equals("weight")) { |
|
|
options.put("title","重量: "+weight+"kg"); |
|
|
options.put("title", "重量: " + weight + "kg"); |
|
|
printElement.put("options",options); |
|
|
printElement.put("options", options); |
|
|
} |
|
|
} |
|
|
if(options.get("testData").equals("time")){ |
|
|
if (options.get("testData").equals("number")) { |
|
|
|
|
|
real_carton=real_carton+1; |
|
|
|
|
|
options.put("title", sum_carton1 + "——" + real_carton); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.get("testData").equals("纸箱号")) { |
|
|
|
|
|
log.info("纸箱号{}{}", first_number, last_number); |
|
|
|
|
|
String number=""; |
|
|
|
|
|
if(fcarton_number1==0){ |
|
|
|
|
|
number = first_number + zx1+zx2+last_number; |
|
|
|
|
|
}else{ |
|
|
|
|
|
number = first_number +bottle_weight1*carton_qty1 +zx2+last_number; |
|
|
|
|
|
} |
|
|
|
|
|
options.put("title", number); |
|
|
|
|
|
options.put("testData", number); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.get("testData").equals("晶澳纸箱号")) { |
|
|
|
|
|
log.info("晶澳纸箱号{}{}",janumber); |
|
|
|
|
|
String number = janumber; |
|
|
|
|
|
options.put("testData", number); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.get("testData").equals("物料号")) { |
|
|
|
|
|
log.info("物料号{}", material_number); |
|
|
|
|
|
options.put("title", material_number); |
|
|
|
|
|
options.put("testData", material_number); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.get("testData").equals("time")) { |
|
|
LocalTime currentTime = LocalTime.now(); |
|
|
LocalTime currentTime = LocalTime.now(); |
|
|
options.put("title","时间: "+ currentTime.getHour() + ":" + currentTime.getMinute() + ":" + currentTime.getSecond()); |
|
|
String minute=""; |
|
|
printElement.put("options",options); |
|
|
String second=""; |
|
|
|
|
|
if(currentTime.getMinute()<10){ |
|
|
|
|
|
minute="0"+currentTime.getMinute(); |
|
|
|
|
|
}else{ |
|
|
|
|
|
minute=String.valueOf(currentTime.getMinute()); |
|
|
|
|
|
} |
|
|
|
|
|
if(currentTime.getSecond()<10){ |
|
|
|
|
|
second="0"+currentTime.getSecond(); |
|
|
|
|
|
}else{ |
|
|
|
|
|
second=String.valueOf(currentTime.getSecond()); |
|
|
|
|
|
} |
|
|
|
|
|
options.put("title", "时间: " + currentTime.getHour() + ":" + minute + ":" + second); |
|
|
|
|
|
printElement.put("options", options); |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
} else { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
jsonObject.put("type", 2); |
|
|
jsonObject.put("type", 2); |
|
|
requireSucess=true; |
|
|
requireSucess = true; |
|
|
log.info("纸箱打印数据: " + jsonObject.toString()); |
|
|
log.info("纸箱打印数据: " + jsonObject.toString()); |
|
|
SendPrintSocket.sendPrint(jsonObject.toString()); |
|
|
Integer fcarton_number2 = fcarton_number1 + 1; |
|
|
|
|
|
String fcarton_number3 = String.valueOf(fcarton_number2); |
|
|
|
|
|
tickets.setFcarton_number(fcarton_number3); |
|
|
|
|
|
ticketsMapper.updateById(tickets); |
|
|
|
|
|
SendPrintSocket.sendPrint(jsonObject.toString()); |
|
|
Map map = new HashMap(); |
|
|
Map map = new HashMap(); |
|
|
map.put("to_command", 200); |
|
|
map.put("to_command", 200); |
|
|
this.writing(map); |
|
|
this.writing(map); |
|
@ -228,70 +379,98 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i |
|
|
} |
|
|
} |
|
|
if (mode == 7 && move == 1 && !requireSucess) { |
|
|
if (mode == 7 && move == 1 && !requireSucess) { |
|
|
//TODO:将贴标信息下发,并反馈200
|
|
|
//TODO:将贴标信息下发,并反馈200
|
|
|
JSONObject template= ticketsMapper.template1(); |
|
|
JSONObject template = ticketsMapper.template1(); |
|
|
Tickets tickets=ticketsMapper.ticket(); |
|
|
Tickets tickets = ticketsMapper.ticket(); |
|
|
String bottle_number=tickets.getBottle_number(); |
|
|
String customer = tickets.getCustomer(); |
|
|
String fbottle_number=tickets.getFbottle_number(); |
|
|
String bottle_number = tickets.getBottle_number(); |
|
|
Integer fbottle_number1=Integer.parseInt(fbottle_number); |
|
|
String fbottle_number = tickets.getFbottle_number(); |
|
|
String psletters = bottle_number.substring(0,18); |
|
|
Integer fbottle_number1 = Integer.parseInt(fbottle_number); |
|
|
String psdigits = bottle_number.substring(18,23); |
|
|
String plan_qty=tickets.getPlanned_quantity(); |
|
|
Integer psdigits1=Integer.parseInt(psdigits)-fbottle_number1; |
|
|
Integer plan_qty1=Integer.parseInt(plan_qty); |
|
|
String jsonString = template.toString(); |
|
|
String psletters = null; |
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
String psdigits = null; |
|
|
// 解析外部 JSON 字符串,获取 "template" 字段的值
|
|
|
Integer psdigits1 = 0; |
|
|
JsonNode rootNode = objectMapper.readTree(jsonString); |
|
|
if (customer.contains("晶科")) { |
|
|
String templateJson = rootNode.get("template").asText(); |
|
|
psletters = bottle_number.substring(0, 18); |
|
|
// 解析嵌套的 "template" 字符串为 JSON 对象
|
|
|
psdigits = bottle_number.substring(18, 23); |
|
|
JsonNode templateNode = objectMapper.readTree(templateJson); |
|
|
psdigits1 = Integer.parseInt(psdigits) - fbottle_number1; |
|
|
// 输出 panels 数据
|
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(templateNode.toString()); |
|
|
} |
|
|
// 获取 panels 数组
|
|
|
if (customer.contains("晶澳")) { |
|
|
JSONArray panels = jsonObject.getJSONArray("panels"); |
|
|
psletters = bottle_number.substring(0, bottle_number.length()-5); |
|
|
JSONObject panel = panels.getJSONObject(0); |
|
|
psdigits = bottle_number.substring(bottle_number.length()-5, bottle_number.length()-2); |
|
|
// 获取 printElements 数组
|
|
|
if (Integer.parseInt(psdigits) >= 100) { |
|
|
JSONArray printElements = panel.getJSONArray("printElements"); |
|
|
psdigits1 = Integer.parseInt(psdigits) - fbottle_number1-plan_qty1; |
|
|
for (int i = 0; i < printElements.size(); i++) { |
|
|
psdigits = String.valueOf(psdigits1); |
|
|
JSONObject printElement = printElements.getJSONObject(i); |
|
|
} else if (Integer.parseInt(psdigits) >= 10) { |
|
|
JSONObject options = printElement.getJSONObject("options"); |
|
|
psdigits1 = Integer.parseInt(psdigits) - fbottle_number1-plan_qty1; |
|
|
if(options.containsKey("testData")){ |
|
|
psdigits = "0" + String.valueOf(psdigits1); |
|
|
if(options.get("title").equals("二维码")){ |
|
|
} else if (Integer.parseInt(psdigits) >= 0) { |
|
|
String number1=psletters+psdigits1; |
|
|
psdigits1 = Integer.parseInt(psdigits) - fbottle_number1-plan_qty1; |
|
|
options.put("testData",number1); |
|
|
psdigits = "00" + String.valueOf(psdigits1); |
|
|
printElement.put("options",options); |
|
|
} |
|
|
} |
|
|
} |
|
|
else if(options.get("testData").equals("瓶号")){ |
|
|
String jsonString = template.toString(); |
|
|
String number1=psletters+psdigits1; |
|
|
ObjectMapper objectMapper = new ObjectMapper(); |
|
|
options.put("title",number1); |
|
|
// 解析外部 JSON 字符串,获取 "template" 字段的值
|
|
|
printElement.put("options",options); |
|
|
JsonNode rootNode = objectMapper.readTree(jsonString); |
|
|
|
|
|
String templateJson = rootNode.get("template").asText(); |
|
|
|
|
|
// 解析嵌套的 "template" 字符串为 JSON 对象
|
|
|
|
|
|
JsonNode templateNode = objectMapper.readTree(templateJson); |
|
|
|
|
|
// 输出 panels 数据
|
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(templateNode.toString()); |
|
|
|
|
|
// 获取 panels 数组
|
|
|
|
|
|
JSONArray panels = jsonObject.getJSONArray("panels"); |
|
|
|
|
|
JSONObject panel = panels.getJSONObject(0); |
|
|
|
|
|
// 获取 printElements 数组
|
|
|
|
|
|
JSONArray printElements = panel.getJSONArray("printElements"); |
|
|
|
|
|
for (int i = 0; i < printElements.size(); i++) { |
|
|
|
|
|
JSONObject printElement = printElements.getJSONObject(i); |
|
|
|
|
|
JSONObject options = printElement.getJSONObject("options"); |
|
|
|
|
|
if (options.containsKey("testData")) { |
|
|
|
|
|
if (options.get("title").equals("晶科二维码")) { |
|
|
|
|
|
String number1 = psletters + psdigits1; |
|
|
|
|
|
options.put("testData", number1); |
|
|
|
|
|
options.put("title", ""); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} else if (options.get("testData").equals("瓶号")) { |
|
|
|
|
|
String number1 = psletters + psdigits1; |
|
|
|
|
|
options.put("title", number1); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} else if (options.get("testData").equals("晶澳瓶号")) { |
|
|
|
|
|
String number1 = psletters + psdigits; |
|
|
|
|
|
options.put("testData", number1 + ",2"); |
|
|
|
|
|
printElement.put("options", options); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
continue; |
|
|
} |
|
|
} |
|
|
}else{ |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
jsonObject.put("type", 1); |
|
|
|
|
|
requireSucess = true; |
|
|
|
|
|
// 输出 panels 数据
|
|
|
|
|
|
SendPrintSocket.sendPrint(jsonObject.toString()); |
|
|
|
|
|
log.info("瓶盖打印数据: " + jsonObject.toString()); |
|
|
|
|
|
fbottle_number1 = fbottle_number1 + 1; |
|
|
|
|
|
String fbottle_number2 = String.valueOf(fbottle_number1); |
|
|
|
|
|
tickets.setFbottle_number(fbottle_number2); |
|
|
|
|
|
ticketsMapper.updateById(tickets); |
|
|
|
|
|
Map map = new HashMap(); |
|
|
|
|
|
map.put("to_command", 200); |
|
|
|
|
|
map.put("to_message", ""); |
|
|
|
|
|
this.writing(map); |
|
|
|
|
|
} else { |
|
|
|
|
|
message = "无请求"; |
|
|
} |
|
|
} |
|
|
jsonObject.put("type", 1); |
|
|
|
|
|
requireSucess=true; |
|
|
|
|
|
fbottle_number1=fbottle_number1+1; |
|
|
|
|
|
String fbottle_number2=String.valueOf(fbottle_number1); |
|
|
|
|
|
// 输出 panels 数据
|
|
|
|
|
|
SendPrintSocket.sendPrint(jsonObject.toString()); |
|
|
|
|
|
log.info("瓶盖打印数据: " + jsonObject.toString()); |
|
|
|
|
|
tickets.setFbottle_number(fbottle_number2); |
|
|
|
|
|
ticketsMapper.updateById(tickets); |
|
|
|
|
|
Map map = new HashMap(); |
|
|
|
|
|
map.put("to_command", 200); |
|
|
|
|
|
map.put("to_message",""); |
|
|
|
|
|
this.writing(map); |
|
|
|
|
|
} else { |
|
|
|
|
|
message = "无请求"; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
last_mode = mode; |
|
|
|
|
|
last_error = error; |
|
|
|
|
|
last_move = move; |
|
|
|
|
|
last_task = task; |
|
|
|
|
|
last_weight = weight; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
last_mode = mode; |
|
|
|
|
|
last_error = error; |
|
|
|
|
|
last_move = move; |
|
|
|
|
|
last_task = task; |
|
|
|
|
|
last_weight = weight; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public boolean exe_error() { |
|
|
public boolean exe_error() { |
|
|