diff --git a/acs/nladmin-system/nlsso-server/pom.xml b/acs/nladmin-system/nlsso-server/pom.xml index 9712e87..5f28977 100644 --- a/acs/nladmin-system/nlsso-server/pom.xml +++ b/acs/nladmin-system/nlsso-server/pom.xml @@ -223,25 +223,20 @@ - - com.alibaba - easyexcel - 2.1.6 - - - org.apache.poi - poi-ooxml-schemas - 3.17 - org.apache.poi poi - 3.17 + 4.1.2 org.apache.poi poi-ooxml - 3.17 + 4.1.2 + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 xerces diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index 2e56178..6d67a42 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -20,6 +20,7 @@ import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.common.utils.CodeUtil; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.ISysParamService; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.HashMap; @@ -31,6 +32,7 @@ import java.util.Map; @Slf4j @Service @RequiredArgsConstructor +@Lazy public class NDCAgvServiceImpl implements NDCAgvService { private final DeviceAppService deviceAppService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index 7d918a1..ae0d941 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -28,6 +28,7 @@ import org.nl.config.language.LangProcess; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -42,6 +43,7 @@ import java.util.Map; @Slf4j @Service @RequiredArgsConstructor +@Lazy public class XianGongAgvServiceImpl implements XianGongAgvService { private final DeviceAppService deviceAppService; private final ISysParamService paramService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java index 5266834..e911c73 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/CartonLabelingMachineDeviceDriver.java @@ -2,7 +2,11 @@ package org.nl.acs.device_driver.conveyor.carton_labeling_machine; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; @@ -24,13 +28,21 @@ import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.common.mnt.websocket.SendPrintSocket; import org.nl.config.SpringContextHolder; import org.nl.system.service.lucene.LuceneExecuteLogService; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.tickets.TicketsService; +import org.nl.system.service.tickets.dto.Tickets; +import org.nl.system.service.tickets.dto.mapper.TicketsMapper; +import org.springframework.beans.factory.annotation.Autowired; import java.io.*; import java.lang.reflect.Method; +import java.math.BigInteger; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.*; /** @@ -63,6 +75,10 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i TicketsService ticketService = SpringContextHolder.getBean("ticketsServiceImpl"); +// @Autowired +// private TicketsMapper ticketsMapper; + TicketsMapper ticketsMapper=SpringContextHolder.getBean("ticketsMapper"); + String device_code; int mode = 0; int error = 0; @@ -129,7 +145,7 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i @Override - public void execute() { + public void execute() throws JsonProcessingException { message = null; try { device_code = this.getDeviceCode(); @@ -137,15 +153,13 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i status = this.itemProtocol.getStatus(); error = this.itemProtocol.getError(); move = this.itemProtocol.getMove(); - + weight=this.itemProtocol.getWeight(); if(mode != last_mode){ requireSucess = false; } - } catch (Exception var17) { return; } - if (mode == 0) { this.setIsonline(false); this.setIserror(true); @@ -163,32 +177,106 @@ public class CartonLabelingMachineDeviceDriver extends AbstractOpcDeviceDriver i Instruction instruction = null; List toInstructions; - if (mode == 8 && status == 1 && move == 1 && !requireSucess) { + if (mode == 8 && move == 1 && !requireSucess) { //TODO:将贴标信息下发,并反馈200 -// deliverTheTemplate(); - String template_address = paramService.findByCode("template_address").getValue(); - if(StrUtil.isNotEmpty(template_address)){ - FileWriter fw = null; - try{ - File file = new File(template_address); - if (!file.exists()) { - file.createNewFile(); + JSONObject template= ticketsMapper.template(); + String jsonString = template.toString(); + ObjectMapper objectMapper = new ObjectMapper(); + // 解析外部 JSON 字符串,获取 "template" 字段的值 + 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("testData").equals("date")){ + LocalDate currentDate = LocalDate.now(); + options.put("title","日期: "+currentDate); + printElement.put("options",options); } - fw = new FileWriter(template_address); - OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file), "utf-8"); - BufferedWriter bw = new BufferedWriter(write); - bw.write(""); - bw.close(); - }catch(Exception e){ - - }finally { - try { - fw.close(); - } catch (IOException e) { - e.printStackTrace(); + if(options.get("testData").equals("weight")){ + options.put("title","重量: "+weight+"kg"); + printElement.put("options",options); } + if(options.get("testData").equals("time")){ + LocalTime currentTime = LocalTime.now(); + options.put("title","时间: "+ currentTime.getHour() + ":" + currentTime.getMinute() + ":" + currentTime.getSecond()); + printElement.put("options",options); + } + }else{ + continue; } } + jsonObject.put("type", 2); + requireSucess=true; + log.info("纸箱打印数据: " + jsonObject.toString()); + SendPrintSocket.sendPrint(jsonObject.toString()); + Map map = new HashMap(); + map.put("to_command", 200); + this.writing(map); + } else { + message = "无请求"; + } + if (mode == 7 && move == 1 && !requireSucess) { + //TODO:将贴标信息下发,并反馈200 + JSONObject template= ticketsMapper.template1(); + Tickets tickets=ticketsMapper.ticket(); + String bottle_number=tickets.getBottle_number(); + String fbottle_number=tickets.getFbottle_number(); + Integer fbottle_number1=Integer.parseInt(fbottle_number); + String psletters = bottle_number.substring(0,18); + String psdigits = bottle_number.substring(18,23); + Integer psdigits1=Integer.parseInt(psdigits)-fbottle_number1; + String jsonString = template.toString(); + ObjectMapper objectMapper = new ObjectMapper(); + // 解析外部 JSON 字符串,获取 "template" 字段的值 + 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); + printElement.put("options",options); + } + else if(options.get("testData").equals("瓶号")){ + String number1=psletters+psdigits1; + options.put("title",number1); + printElement.put("options",options); + } + }else{ + continue; + } + } + 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",""); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/ItemProtocol.java index 2e6298b..dc2b52e 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/carton_labeling_machine/ItemProtocol.java @@ -47,6 +47,10 @@ public class ItemProtocol { * 贴标信息 */ public static String item_to_message = "to_message"; + /** + * 重量 + */ + public static String item_weight = "weight"; Boolean isonline; @@ -89,6 +93,9 @@ public class ItemProtocol { return this.getOpcStringValue(item_to_message); } + public float getWeight(){ + return this.getOpcFloatValue(item_weight); + } /** * 是否有货 * @param move @@ -137,6 +144,7 @@ public class ItemProtocol { list.add(new ItemDto(item_status, "设备状态", "DB81.B3")); list.add(new ItemDto(item_error, "故障", "DB81.B5")); list.add(new ItemDto(item_move, "光电", "DB81.B2")); + list.add(new ItemDto(item_weight, "重量", "DB81.B2")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/ItemProtocol.java index 22345db..438ba50 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/ItemProtocol.java @@ -80,6 +80,10 @@ public class ItemProtocol { * 生产重量(单位:g) */ private static String item_to_weight = "to_weight"; + /** + * 是否打印瓶身 + */ + private static String item_is_printbottle = "is_printbottle"; private PrimaryDeviceConveyorDeviceDriver driver; @@ -148,6 +152,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_ice); } + public int getIs_printbottle() { + return this.getOpcIntegerValue(item_is_printbottle); + } + public Float getTo_weight() { return this.getOpcFloatValue(item_to_weight); } @@ -211,6 +219,7 @@ public class ItemProtocol { list.add(new ItemDto(item_to_labeling1, "人工贴标1(后贴标位)", "DB601.D8")); list.add(new ItemDto(item_to_ice, "加冰", "DB601.D8")); list.add(new ItemDto(item_to_weight, "生产重量", "DB601.D8")); + list.add(new ItemDto(item_is_printbottle, "是否打印瓶身", "DB601.D8")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/PrimaryDeviceConveyorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/PrimaryDeviceConveyorDeviceDriver.java index 2607ec7..3dcf5e3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/PrimaryDeviceConveyorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/conveyor/primary_device/PrimaryDeviceConveyorDeviceDriver.java @@ -35,6 +35,8 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.config.SpringContextHolder; import org.nl.config.thread.ThreadPoolExecutorUtil; +import org.nl.system.service.lucene.LuceneExecuteLogService; +import org.nl.system.service.lucene.dto.LuceneLogDto; import org.nl.system.service.tickets.dto.Tickets; import org.openscada.opc.lib.da.Server; @@ -406,6 +408,44 @@ public class PrimaryDeviceConveyorDeviceDriver extends AbstractOpcDeviceDriver i } } + /** + * 多个信号一起下发电气 + * + * @param map + */ + + public void writing(Map map) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); + try{ + this.checkcontrol(itemMap); + } catch (Exception e1){ + e1.printStackTrace(); + } + } + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(), "下发多个电气信号:" + itemMap)); + } + } + /** + * 抽取统一下发电气信号前缀 + * + * @return + */ + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/mes/service/impl/MesToAcsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/mes/service/impl/MesToAcsServiceImpl.java index d9716b1..f6c2fda 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/mes/service/impl/MesToAcsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/mes/service/impl/MesToAcsServiceImpl.java @@ -32,7 +32,7 @@ public class MesToAcsServiceImpl implements MesToAcsService { public Object issuedTickets(JSONObject json) { if(ObjectUtil.isNotEmpty(json)){ Tickets tickets = BeanUtil.copyProperties(json, Tickets.class); - if(StrUtil.isEmpty(tickets.getTicket_code()) || StrUtil.isEmpty(tickets.getProduction_orders()) || StrUtil.isEmpty(tickets.getDevice_code())){ + if(StrUtil.isEmpty(tickets.getTicket_code()) || StrUtil.isEmpty(tickets.getActual_batch()) || StrUtil.isEmpty(tickets.getDevice_code())){ throw new BadRequestException("工单信息不能为空"); } Device deviceByCode = deviceAppService.findDeviceByCode(tickets.getDevice_code()); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index bf0b955..1230ed3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -23,11 +23,13 @@ import org.nl.acs.task.service.TaskService; import org.nl.system.service.param.ISysParamService; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor @Slf4j +@Lazy public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired ISysParamService paramService; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 9c5cffe..a103c72 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -61,6 +61,7 @@ import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -80,6 +81,7 @@ import java.util.stream.Collectors; */ @Service @Slf4j +@Lazy @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class TaskServiceImpl extends CommonServiceImpl implements TaskService, ApplicationAutoInitial { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/taskscreen/service/impl/TaskScreenServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/taskscreen/service/impl/TaskScreenServiceImpl.java index debb2df..4292dcb 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/taskscreen/service/impl/TaskScreenServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/taskscreen/service/impl/TaskScreenServiceImpl.java @@ -22,6 +22,7 @@ import org.nl.acs.opc.DeviceAppService; import org.nl.acs.taskscreen.mapper.TaskScreenMapper; import org.nl.acs.taskscreen.service.TaskScreenService; import org.nl.common.exception.BadRequestException; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +37,7 @@ import java.util.List; @Service @AllArgsConstructor @Slf4j +@Lazy @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) public class TaskScreenServiceImpl extends CommonServiceImpl implements TaskScreenService, ApplicationAutoInitial { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/WorkOrderStatusEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/WorkOrderStatusEnum.java index 20cf57e..16159c4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/WorkOrderStatusEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/enums/WorkOrderStatusEnum.java @@ -17,33 +17,9 @@ import java.util.Map; @AllArgsConstructor @Getter public enum WorkOrderStatusEnum { - //分切工单状态 - CUT_PRODUCT_STATUS(MapOf.of("开始", "01", "配送中", "02", "配送完成", "03", "入站中", "04", "入站完成", "05", "出站中", "06", "结束", "09")), - - //生箔工序工单状态 - PRODUCT_STATUS(MapOf.of("开始", "01", "空轴搬出", "02", "确认下卷", "03", "下卷完成", - "04", "结束", "09")), - - //完成方式 - FINISH_TYPE(MapOf.of("自动", "01", "手动", "02")); - - - private Map code; - - public String code(String desc) { - String code = this.getCode().get(desc); - if (StringUtils.isNotEmpty(code)) { - return code; - } - throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); - } - - public String check(String code) { - for (Map.Entry entry : this.getCode().entrySet()) { - if (entry.getValue().equals("code")) { - return entry.getValue(); - } - } - throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); - } + UNPRODUCED("0", "未生产"), + PRODUCING("1", "生产中"), + COMPLETE("2", "完成"); + private final String code; + private final String name; } \ No newline at end of file diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/mnt/websocket/SendPrintSocket.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/mnt/websocket/SendPrintSocket.java index 4e884bc..1a961b5 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/mnt/websocket/SendPrintSocket.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/mnt/websocket/SendPrintSocket.java @@ -90,6 +90,7 @@ public class SendPrintSocket { try { //如果有多个客户端连接一个服务端,只要给一个客户端下发打印即可 for (SendPrintSocket printSocket : webSocketSet) { + log.info("下发数据给打印机"); if (printSocket.session.isOpen()){ printSocket.session.getBasicRemote().sendText(print); break; @@ -101,7 +102,4 @@ public class SendPrintSocket { } } - public static void main(String[] args) { - SendPrintSocket.sendPrint("xxx"); - } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ComPortUtil.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ComPortUtil.java index 91575f1..7be665f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ComPortUtil.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/ComPortUtil.java @@ -1,76 +1,127 @@ -package org.nl.common.utils; - -import com.fazecast.jSerialComm.SerialPort; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.stereotype.Service; - -import java.util.function.Function; - -@Service -@ConditionalOnProperty(prefix = "comPort",name = "need") -public class ComPortUtil { - - private static SerialPort serialPort; - - @Value("${comPort.name}") - private String cname; - @Value("${comPort.newBaudRate}") - private static int newBaudRate; - @Value("${comPort.newDataBits}") - private static int newDataBits; - @Value("${comPort.newStopBits}") - private static int newStopBits; - @Value("${comPort.newParity}") - private static int newParity; - - public ComPortUtil() { - SerialPort[] commPorts = SerialPort.getCommPorts(); - if (commPorts ==null || commPorts.length < 1 || StringUtils.isEmpty(cname)){ - throw new RuntimeException("项目启动失败:无法识别com口信息"); - } - for (SerialPort commPort : commPorts) { - if (commPort.getSystemPortName().equals(cname)){ - serialPort = commPort; - } - throw new RuntimeException("项目启动失败:没有找到对应com口"); - } - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - System.out.println("---项目停机执行关闭逻辑---"); - this.doDestroy(); - })); - } - private static void readComMsg(Function function){ - if (serialPort!=null){ - try { - serialPort.openPort();// 打开串口 - serialPort.setComPortParameters(newBaudRate, newDataBits, newStopBits, newParity);// 设置串口参数 - serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0); - byte[] buffer = new byte[1024]; - while (serialPort.isOpen()){ - Thread.sleep(500); - int bytesRead = serialPort.readBytes(buffer, buffer.length); - if (bytesRead > 0) { - String msg = new String(buffer, 0, bytesRead); - System.out.println("--获取COM口信息--"+msg); - if (function != null){ - function.apply(msg); - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (serialPort!=null && serialPort.isOpen()) { - serialPort.closePort();// 关闭串口 - } - } - } - } - private void doDestroy(){ - if (serialPort!=null && serialPort.isOpen()) { - serialPort.closePort();// 关闭串口 - } - } -} +//package org.nl.common.utils; +// +//import cn.hutool.core.bean.BeanUtil; +//import cn.hutool.core.date.DateUtil; +//import cn.hutool.core.util.IdUtil; +//import com.fazecast.jSerialComm.SerialPort; +//import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.lang3.StringUtils; +//import org.nl.system.service.tickets.dto.Tickets; +//import org.nl.system.service.tickets.dto.mapper.TicketsMapper; +//import org.nl.system.service.weight.dao.Weight; +//import org.nl.system.service.weight.dao.mapper.WeightMapper; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.stereotype.Service; +// +//import javax.annotation.PostConstruct; +//import java.util.function.Function; +// +//@Service +//@Slf4j +//@ConditionalOnProperty(prefix = "comPort",name = "need") +//public class ComPortUtil { +// +// private static SerialPort serialPort; +// +// @Value("${comPort.cname}") +// public String cname; +// @Value("${comPort.newBaudRate}") +// public int newBaudRate; +// @Value("${comPort.newDataBits}") +// public int newDataBits; +// @Value("${comPort.newStopBits}") +// public int newStopBits; +// @Value("${comPort.newParity}") +// public int newParity; +// @Autowired +// WeightMapper weightMapper; +// @Autowired +// TicketsMapper ticketsMapper; +// +// @PostConstruct +// public void beanafter() { +// log.info("进入串口连接"); +// SerialPort[] commPorts = SerialPort.getCommPorts(); +// if (commPorts ==null || commPorts.length < 1 || StringUtils.isEmpty(cname)){ +// throw new RuntimeException("项目启动失败:无法识别com口信息"); +// } +// for (SerialPort commPort : commPorts) { +// System.out.println("串口名称:"+commPort.getSystemPortName()); +// if (commPort.getSystemPortName().equals(cname)){ +// serialPort = commPort; +// break; +// } +// } +//// if (serialPort ==null){ +//// throw new RuntimeException("项目启动失败:没有找到对应com口"); +//// } +// Runtime.getRuntime().addShutdownHook(new Thread(() -> { +// System.out.println("---项目停机执行关闭逻辑---"); +// this.doDestroy(); +// })); +// readComMsg(null); +// } +// private void readComMsg(Function function){ +// if (serialPort!=null){ +// Thread run = new Thread(()->{ +// try { +// serialPort.openPort();// 打开串口 +// serialPort.setComPortParameters(newBaudRate, newDataBits, newStopBits, newParity);// 设置串口参数 +// serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0); +// byte[] buffer = new byte[1024]; +// System.out.println("---------"+Thread.currentThread().getName()); +// while (serialPort.isOpen()){ +// Thread.sleep(500); +// int bytesRead = serialPort.readBytes(buffer, buffer.length); +// if (bytesRead > 0) { +// String msg = new String(buffer, 0, bytesRead); +// boolean containsDigit = false; +// for (int i = 0; i < msg.length(); i++) { +// if (Character.isDigit(msg.charAt(i))) { +// containsDigit = true; +// break; +// } +// } +// if (containsDigit) { +// Weight weight1 = new Weight(); +// weight1.setWeight_id(IdUtil.getSnowflake(1, 1).nextIdStr()); +// float weight=Float.parseFloat(msg.replaceAll("[^0-9]", "")); +// float realweight=weight/100; +// weight1.setReal_weight(String.valueOf(realweight)); +// String now = DateUtil.now(); +// weight1.setCreate_time(now); +// Tickets tickets=new Tickets(); +// tickets=ticketsMapper.ticket(); +// String ticket_code=tickets.getTicket_code(); +// weight1.setTicket_code(ticket_code); +// weightMapper.insert(weight1); +// System.out.println("--获取COM口信息--" + msg); +// } +// if (function != null){ +// function.apply(msg); +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } finally { +// try { +// if (serialPort.isOpen()) { +// serialPort.closePort(); // 确保关闭串口 +// } +// } catch (Exception ex) { +// ex.printStackTrace(); // 处理关闭串口时的异常 +// } +// } +// }); +// run.start(); +// } +// } +// private void doDestroy(){ +// if (serialPort!=null && serialPort.isOpen()) { +// serialPort.closePort();// 关闭串口 +// } +// } +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/template/TemplateController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/template/TemplateController.java index e1dfebb..67e6089 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/template/TemplateController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/template/TemplateController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.fasterxml.jackson.core.JsonProcessingException; import lombok.RequiredArgsConstructor; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; @@ -28,21 +29,24 @@ public class TemplateController { @PostMapping @Log("添加模板") - public ResponseEntity add(@RequestBody Map map) { - boolean template_isNot = CollUtil.isNotEmpty(map); - if(!template_isNot || StrUtil.isEmpty((String) map.get("template_name"))){ - throw new RuntimeException("模板名称不能为空"); - } + public ResponseEntity add(@RequestParam Map map) throws JsonProcessingException { templateService.addTemplate(map); return new ResponseEntity<>(HttpStatus.OK); } @GetMapping("/getTemplateList") - @Log("前端打印模板名称下拉选列表") + @Log("前端瓶盖打印模板名称下拉选列表") public ResponseEntity getTemplateList() { return new ResponseEntity<>(templateService.getTemplateList(), HttpStatus.OK); } + @GetMapping("/getTemplateList1") + @Log("前端纸箱打印模板名称下拉选列表") + public ResponseEntity getTemplateList1() { + return new ResponseEntity<>(templateService.getTemplateList1(), HttpStatus.OK); + } + + @GetMapping("/getTicketList") @Log("前端模板需要关联的工单下拉选列表") public ResponseEntity getTicketList() { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tickets/TicketsController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tickets/TicketsController.java index 0d84212..710755b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tickets/TicketsController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/tickets/TicketsController.java @@ -13,6 +13,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Map; /** @@ -44,6 +46,19 @@ public class TicketsController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/submits") + @Log("工单下发") + public ResponseEntity submits(@RequestBody Tickets entity){ + ticketsService.submits(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/finishorder") + @Log("工单完成") + public ResponseEntity finishorder(@RequestBody Tickets entity){ + ticketsService.finishorder(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } @PutMapping @Log("修改工单") public ResponseEntity update(@RequestBody TicketsDto ticketsDto) { @@ -51,7 +66,7 @@ public class TicketsController { return new ResponseEntity<>(HttpStatus.OK); } - @GetMapping("selectOne") + @GetMapping("/selectOne") @Log("查询单个工单") public ResponseEntity getById(@RequestParam String id) { return new ResponseEntity<>(ticketsService.getById(id), HttpStatus.OK); @@ -64,4 +79,10 @@ public class TicketsController { return new ResponseEntity<>(HttpStatus.OK); } + @Log("导出每日工单信息") + @GetMapping(value = "/download") + public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException { + ticketsService.download(ticketsService.queryAll(whereJson), response); + } + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/template/TemplateService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/template/TemplateService.java index 246374f..048ad58 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/template/TemplateService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/template/TemplateService.java @@ -3,6 +3,7 @@ package org.nl.system.service.template; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.fasterxml.jackson.core.JsonProcessingException; import org.nl.common.domain.query.PageQuery; import org.nl.system.service.template.dto.Template; @@ -11,7 +12,7 @@ import java.util.Map; public interface TemplateService extends IService