diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java index 4310148..97b89aa 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java @@ -16,6 +16,9 @@ import com.dsic.gj_erp.service.zyjh.YcldwInfoService; import com.dsic.gj_erp.service.zyjh.YcldwService; import com.dsic.gj_erp.service.zyjh.ZyjhService; import com.dsic.gj_erp.ws.WsHandler; +import com.dsic.gj_erp.wsclient.Message; +import com.dsic.gj_erp.wsclient.WebSocketClientComponent; +import com.dsic.gj_erp.wsclient.WebSocketService; import lombok.AllArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -37,6 +40,9 @@ public class ZyjhController { private final WsHandler wsHandler; + private final WebSocketService webSocketService; + private final WebSocketClientComponent webSocketClientComponent; + /** * 作业计划执行,派工&反馈 */ @@ -75,10 +81,27 @@ public class ZyjhController { } zyjhService.updateBatchById(list); + if (dto.getAudioFlag()){ + Message result = Message.result(webSocketClientComponent.getErpId(), "1"); + webSocketService.sendMessage(result.toString()); + } + return new ResultBean<>(); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); - throw new ServiceException(10001,"属性字段不存在"); + if (dto.getAudioFlag()){ + Message result = Message.result(webSocketClientComponent.getErpId(), "0"); + try { + webSocketService.sendMessage(result.toString()); + } catch (Exception ex) { + e.printStackTrace(); + throw new ServiceException(10001,"执行失败"); + } + } + throw new ServiceException(10001,"反馈属性不存在"); + } catch (Exception e) { + e.printStackTrace(); + throw new ServiceException(10001,"执行失败"); } } @PostMapping("zxweb") @@ -121,8 +144,8 @@ public class ZyjhController { List list = zyjhService.list(Wrappers.query() //执行查询 .eq(StrUtil.isNotEmpty(search.getField()),search.getField(),search.getUser()) - .isNull(StrUtil.isEmpty(search.getField()),search.getField()) - .eq(StrUtil.isNotEmpty(search.getZt()),"zt",search.getZt()) +// .isNull(StrUtil.isEmpty(search.getField()),search.getField()) + .eq(StrUtil.isNotEmpty(search.getZt()),"zt",search.getZt()).or(StrUtil.isNotEmpty(search.getZtHx()),it->it.eq("zt",search.getZtHx())) .eq(StrUtil.isNotEmpty(search.getDcch()),"dcch",search.getDcch()) .le(StrUtil.isNotEmpty(search.getJhrqField()),search.getJhrqField(), DateUtil.date().toString("yyyy/MM/dd")) //跟踪查询 diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgDto.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgDto.java index 7140218..3306171 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgDto.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgDto.java @@ -15,6 +15,7 @@ public class PgDto { private String zxZtName; private List list; private String zt; + private Boolean audioFlag=false; private YcldwInfo ycldwInfo; } diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgdSearch.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgdSearch.java index aaf4f07..cb5b3c4 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgdSearch.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PgdSearch.java @@ -9,6 +9,7 @@ public class PgdSearch { //执行查询 private String zt; + private String ztHx;//划线状态,用于切割查询,切割可以查询理料完成和划线完成的所有工单 private String field; private String user; private String jhrqField; diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java index 429792d..a76a306 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmJtsyjhServiceImpl.java @@ -57,6 +57,7 @@ public class DmJtsyjhServiceImpl extends ServiceImpl i if(StringUtils.isNotEmpty(json.getString("Zt"))){ queryWrapper.eq("zt",json.getString("Zt")); } + queryWrapper.orderByAsc("DC_CH","DC_PL","DC_FD"); List dmTzjhs=dmJtsyjhMapper.selectList(queryWrapper); return dmTzjhs; } diff --git a/src/main/java/com/dsic/gj_erp/ws/WsHandler.java b/src/main/java/com/dsic/gj_erp/ws/WsHandler.java index 81ccdbc..029203a 100644 --- a/src/main/java/com/dsic/gj_erp/ws/WsHandler.java +++ b/src/main/java/com/dsic/gj_erp/ws/WsHandler.java @@ -38,8 +38,8 @@ public class WsHandler { } } - public void whoIsSelect(JSONObject object){ - socketIOServer.getBroadcastOperations().sendEvent("whoIsSelect", object); + public void zyjhzx(JSONObject object){ + socketIOServer.getBroadcastOperations().sendEvent("zyjhzx", object); } public void sendSlComplete(JSONObject object) { diff --git a/src/main/java/com/dsic/gj_erp/wsclient/Message.java b/src/main/java/com/dsic/gj_erp/wsclient/Message.java index a8b076f..0000627 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/Message.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/Message.java @@ -10,7 +10,7 @@ import lombok.Setter; @Getter @Setter public class Message { - private String code; + private int code; private Msg msg; @JSONField(serialize = false) private CodeEnum codeEx; @@ -33,39 +33,46 @@ public class Message { return message; } + public static Message result(String id,String result){ + Message message = new Message(); + message.setCode(CodeEnum.RESULT.getCode()); + message.setMsg(Msg.success(id,result)); + return message; + } + public void formatInstructions(){ if (this.getCodeEx()==CodeEnum.ZX){ Instructions.valueOf(this.msg.getResult()); } } - public void formatCodeToEnum(@NonNull String code){ + public void formatCodeToEnum(@NonNull int code){ for (CodeEnum e:CodeEnum.values()){ - if (e.getCode().equals(code)){ + if (e.getCode()==code){ this.codeEx=e; } } } - public CodeEnum getEnumByCode(@NonNull String code){ + public CodeEnum getEnumByCode(@NonNull int code){ for (CodeEnum e:CodeEnum.values()){ - if (e.getCode().equals(code)){ + if (e.getCode()==code){ return e; } } return null; } + @Getter @AllArgsConstructor public enum CodeEnum{ - REG("9000"), - ZX("3000"), - RESULT("9002"), - HEART("9003"), + REG(9000), + ZX(3000), + RESULT(9002), + HEART(9003), ; - @Getter - private final String code; + private final int code; } public enum Instructions{ @@ -87,6 +94,13 @@ public class Message { msg.setErpId(id); return msg; } + + private static Msg success(String id,String code){ + Msg msg = new Msg(); + msg.setErpId(id); + msg.setResult(code); + return msg; + } } public JSONObject toJson(){ diff --git a/src/main/java/com/dsic/gj_erp/wsclient/WebSocketClientComponent.java b/src/main/java/com/dsic/gj_erp/wsclient/WebSocketClientComponent.java index 46ce7d4..9fdbc40 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/WebSocketClientComponent.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/WebSocketClientComponent.java @@ -3,6 +3,7 @@ package com.dsic.gj_erp.wsclient; import com.dsic.gj_erp.wsclient.handler.HeartHandler; import lombok.AllArgsConstructor; +import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -16,6 +17,7 @@ public class WebSocketClientComponent { @Value("${ws.client.url}") private String url; + @Getter @Value("${ws.client.id}") private String erpId; @@ -33,4 +35,5 @@ public class WebSocketClientComponent { e.printStackTrace(); } } + } diff --git a/src/main/java/com/dsic/gj_erp/wsclient/WebSocketService.java b/src/main/java/com/dsic/gj_erp/wsclient/WebSocketService.java index 22653a6..375d287 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/WebSocketService.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/WebSocketService.java @@ -1,7 +1,10 @@ package com.dsic.gj_erp.wsclient; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; -import lombok.AllArgsConstructor; +import com.dsic.gj_erp.wsclient.handler.ZxHandler; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; @@ -9,14 +12,17 @@ import org.springframework.web.socket.client.WebSocketClient; import org.springframework.web.socket.client.WebSocketConnectionManager; import org.springframework.web.socket.handler.TextWebSocketHandler; +@Slf4j @Service -@AllArgsConstructor +@RequiredArgsConstructor public class WebSocketService extends TextWebSocketHandler { private WebSocketSession session; private final WebSocketClient client; + private final ZxHandler zxHandler; + public void connect(String uri) { WebSocketConnectionManager manager = new WebSocketConnectionManager(client, this, uri); @@ -48,8 +54,10 @@ public class WebSocketService extends TextWebSocketHandler { Message msg= JSONObject.parseObject(message.getPayload(),Message.class); switch (msg.getCodeEx()){ case REG: + log.info("设备{},连接成功",msg.getMsg().getDeviceId()); break; case ZX: + zxHandler.execute(msg); break; diff --git a/src/main/java/com/dsic/gj_erp/wsclient/handler/HeartHandler.java b/src/main/java/com/dsic/gj_erp/wsclient/handler/HeartHandler.java index 3458f45..42387ba 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/handler/HeartHandler.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/handler/HeartHandler.java @@ -17,9 +17,9 @@ public class HeartHandler implements IHandlerService{ private boolean scheduleStartFlag=false; @Override - public void execute(Message message) { + public boolean execute(Message message) { if (this.scheduleStartFlag){ - return; + return true; } CronUtil.schedule("*/30 * * * * *", (Task) () -> { try { @@ -33,5 +33,6 @@ public class HeartHandler implements IHandlerService{ CronUtil.setMatchSecond(true); CronUtil.start(); this.scheduleStartFlag=true; + return true; } } diff --git a/src/main/java/com/dsic/gj_erp/wsclient/handler/IHandlerService.java b/src/main/java/com/dsic/gj_erp/wsclient/handler/IHandlerService.java index 93c06ec..7fe8506 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/handler/IHandlerService.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/handler/IHandlerService.java @@ -1,9 +1,8 @@ package com.dsic.gj_erp.wsclient.handler; -import com.alibaba.fastjson.JSONObject; import com.dsic.gj_erp.wsclient.Message; public interface IHandlerService { - void execute(Message message); + boolean execute(Message message); } diff --git a/src/main/java/com/dsic/gj_erp/wsclient/handler/ZxHandler.java b/src/main/java/com/dsic/gj_erp/wsclient/handler/ZxHandler.java index 734173e..fc28f0d 100644 --- a/src/main/java/com/dsic/gj_erp/wsclient/handler/ZxHandler.java +++ b/src/main/java/com/dsic/gj_erp/wsclient/handler/ZxHandler.java @@ -17,17 +17,14 @@ public class ZxHandler implements IHandlerService{ private final WsHandler wsHandler; @Override - public void execute(Message message) { + public boolean execute(Message message) { String djh=message.getMsg().getOrderNumber(); DmYdjh one = ydjhService.getOne(Wrappers.lambdaQuery().eq(DmYdjh::getDjh, djh)); - switch (message.getInstructions()){ - case 开始派工: - case 开始报工: - JSONObject object=new JSONObject(); - object.put("zyjh",one); - wsHandler.whoIsSelect(object); - break; + JSONObject object=new JSONObject(); + object.put("zyjh",one); + object.put("zt",one.getZt()); + wsHandler.zyjhzx(object); - } + return true; } }