From 785ce007ce4b7b2119a99aacc95cefe9da09e32e Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期二, 04 七月 2023 16:49:09 +0800 Subject: [PATCH] 优化出入库逻辑,调整节点事件 --- igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java | 326 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 253 insertions(+), 73 deletions(-) diff --git a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutDeviceManager.java b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java similarity index 64% rename from igds-inout/src/main/java/com/ld/igds/inout/manager/InoutDeviceManager.java rename to igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java index 81ce32e..c4c35af 100644 --- a/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutDeviceManager.java +++ b/igds-inout/src/main/java/com/ld/igds/inout/manager/InoutEventControlManager.java @@ -5,22 +5,26 @@ import com.ld.igds.camera.data.ApiCameraData; import com.ld.igds.camera.data.ApiCameraResp; import com.ld.igds.camera.data.ApiSnapReq; +import com.ld.igds.constant.BizType; import com.ld.igds.data.SnapImgDto; import com.ld.igds.file.CoreFileService; import com.ld.igds.inout.ApiInoutManager; -import com.ld.igds.inout.InoutConstant; -import com.ld.igds.inout.dto.ApiInoutData; -import com.ld.igds.inout.dto.InoutCameraDto; -import com.ld.igds.inout.dto.InoutData; import com.ld.igds.inout.ApiInoutService; +import com.ld.igds.inout.InoutConstant; +import com.ld.igds.inout.dto.*; +import com.ld.igds.inout.service.InoutService; import com.ld.igds.io.constant.ProtocolEnum; import com.ld.igds.m.service.InoutCommonService; import com.ld.igds.models.InoutConf; import com.ld.igds.models.SnapSer; import com.ld.igds.util.ContextUtil; +import com.ld.igds.util.NumberUtil; import com.ld.igds.view.service.SnapSerService; +import com.ld.igds.websocket.WebSocketPacket; +import com.ld.igds.websocket.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -30,18 +34,22 @@ /** - * @Desc: 鍑哄叆搴撶浉鍏宠澶囨搷浣滐紝涓氬姟閫昏緫鍖呮嫭鎽勫儚澶存搷浣滐紝鍦扮锛屾墻鏍锋満绛夋墍鏈夎澶� + * @Desc: 鍑哄叆搴撹繃绋嬩腑锛岄拡瀵规祦绋嬬浉鍏崇殑璁惧鑱斿姩鎺у埗鍖呮嫭锛屽湴纾呫�佹墻鏍锋満銆佽鍗″櫒銆侀椄鏈恒�丩ED瀵规帴绛� + * <p> + * 娉ㄦ剰锛涘綋鍓嶇被涓簨浠剁被鏂规硶鍧囦娇鐢ㄥ紓姝ユ柟寮忓疄鐜� * @author: Andy - * @update-time: 2022/11/24 + * @update-time: 2023/7/4 閲嶆柊浼樺寲 */ @Slf4j @Component -public class InoutDeviceManager { +public class InoutEventControlManager { @Resource private SnapSerService snapSerService; @Resource private InoutCommonService inoutCommonService; + @Resource + private InoutService inoutService; @Resource private CoreFileService fileService; @Resource @@ -50,6 +58,12 @@ private ApiCameraManager apiCameraManager; + /** + * 椤甸潰鑾峰彇杞︾墝璇嗗埆 + * + * @param param + * @return + */ public ApiInoutData getPlateNum(ApiInoutData param) { //濡傛灉浣跨敤鐨勬槸鍦扮鎻掍欢鑾峰彇锛屽垯闇�瑕佽皟鏁磋澶囦负鍦扮鎻掍欢淇℃伅 @@ -61,68 +75,44 @@ return param; } - ApiInoutData pluginWeight = new ApiInoutData(); - pluginWeight = param; - pluginWeight.setIp(conf.getIp()); - pluginWeight.setPort(conf.getPort()); - pluginWeight.setProtocol(conf.getProtocol()); - return apiInoutManager.getApiService(param.getProtocol()).getPlateNum(pluginWeight); + param.setIp(conf.getIp()); + param.setPort(conf.getPort()); + param.setProtocol(conf.getProtocol()); + + return apiInoutManager.getApiService(param.getProtocol()).getPlateNum(param); } - return apiInoutManager.getApiService(param.getProtocol()).getPlateNum(param); } + + /** + * 鑾峰彇鏅烘収鍗$粨鏋� + * + * @param param + * @return + */ public ApiInoutData getIcCardNum(ApiInoutData param) { return apiInoutManager.getApiService(param.getProtocol()).getIcCardNum(param); } - /** - * 鑾峰彇绉伴噸鎻掍欢閰嶇疆淇℃伅 - * - * @param companyId - * @param deptId - * @param sort - * @param type - * @return - */ - public InoutConf getInoutConf(String companyId, String deptId, String sort, String type) { - - // 鑾峰彇鍑哄叆搴撻厤缃俊鎭� - List<InoutConf> listInoutConf = inoutCommonService.getCacheInoutConf(companyId, deptId); - - if (null == listInoutConf) return null; - - InoutConf result = null; - - for (InoutConf conf : listInoutConf) { - if (sort.equals(conf.getSort()) && type.equals(conf.getType())) { - result = conf; - break; - } - } - - if (null == result) return null; - - return result; - } - /** - * 鍒濆鍖栬溅鐗岃瘑鍒� + * 鍑哄叆搴撶櫥璁板垵濮嬪寲 * - * @param conf + * @param lpr 杞︾墝璇嗗埆閰嶇疆淇℃伅 */ - public void initLpr(InoutConf conf) { + @Async + public void initInoutRegister(InoutConf lpr) { - if (null == conf) return; + if (null == lpr) return; - ApiInoutData lprData = new ApiInoutData(conf); + ApiInoutData lprData = new ApiInoutData(lpr); - apiInoutManager.getApiService(conf.getProtocol()).initLpr(lprData); + apiInoutManager.getApiService(lpr.getProtocol()).initLpr(lprData); } @@ -157,34 +147,17 @@ public SnapImgDto snapImg(SnapImgDto param) { try { InoutConf conf; - - //鐧昏鏃跺�欐姄鎷� - if (InoutConstant.PROGRESS_REGISTER.equals(param.getProgress())) { - this.noticeGatewayAddWhitePlate(param); - } - - //鐐瑰嚮绉伴噸瀹屾垚 - if (InoutConstant.PROGRESS_WEIGHT_TAG.equals(param.getProgress()) - || InoutConstant.PROGRESS_WEIGHT_FULL.equals(param.getProgress()) || - InoutConstant.PROGRESS_WEIGHT_EMPTY.equals(param.getProgress())) { - - this.noticeGatewayWeightInfo(param); - } - SnapSer ser = snapSerService.getCacheByDeptId(param.getDeptId()); - if (StringUtils.isNotEmpty(param.getId1())) { conf = inoutCommonService.getCacheInoutConf(param.getCompanyId(), param.getDeptId(), param.getId1()); param.setFileName1(this.snapImgByConf(conf, param, ser)); - Thread.sleep(600); + Thread.sleep(500); } - if (StringUtils.isNotEmpty(param.getId2())) { conf = inoutCommonService.getCacheInoutConf(param.getCompanyId(), param.getDeptId(), param.getId2()); param.setFileName2(this.snapImgByConf(conf, param, ser)); - Thread.sleep(600); + Thread.sleep(500); } - if (StringUtils.isNotEmpty(param.getId3())) { conf = inoutCommonService.getCacheInoutConf(param.getCompanyId(), param.getDeptId(), param.getId3()); param.setFileName3(this.snapImgByConf(conf, param, ser)); @@ -221,7 +194,7 @@ apiData.setMsg("绉伴噸宸插畬鎴�"); // apiInoutManager.getApiService(apiData.getProtocol()).noticeWeightDone(apiData); - apiInoutManager.getApiService(apiData.getProtocol()).noticeRadio(apiData); + // apiInoutManager.getApiService(apiData.getProtocol()).noticeRadio(apiData); } /** @@ -426,17 +399,224 @@ return null; } + /** + * 鍑哄叆搴撶櫥璁板畬鎴愯Е鍙戜簨浠讹紝榛樿涓哄紓姝ュ鐞� + * + * @param data + */ + @Async + public void onInoutRegister(InoutData data) { + + //DO Nothing + } + /** - * 鏍规嵁鍑哄叆搴撲俊鎭紝鎺у埗鍑哄叆搴撴帶鍒跺櫒 + * 鍑哄叆搴撶О閲嶅畬鎴愶紝浜嬩欢 * * @param data * @param curProgress * @param nextProgress */ - public void controlWeight(InoutData data, String curProgress, String nextProgress) { + @Async + public void onInoutWeight(InoutData data, String curProgress, String nextProgress) { - //TODO + //1銆侀�氱煡绉伴噸鏄剧ず灞� + + //2銆佽闊抽�氱煡 + + //3銆佸紑闂告満 + + //4銆佸紑绾㈢豢鐏� } + + + /** + * 鍊间粨瀹屾垚锛屼簨浠� + * + * @param data + * @param curProgress + * @param nextProgress + */ + @Async + public void onInoutHandle(InoutData data, String curProgress, String nextProgress) { + + //DO Nothing + } + + + /** + * 鎵︽牱瀹屾垚锛屼簨浠� + * + * @param data + */ + @Async + public void onInSimple(InoutCheckData data) { + //DO Nothing + } + + /** + * 璐ㄦ瀹屾垚锛屼簨浠� + * + * @param data + * @param curProgress + * @param nextProgress + */ + @Async + public void onInCheck(InoutCheckData data, String curProgress, String nextProgress) { + //1銆佽川妫�澶у睆鏄剧ず + } + + /** + * 娴佺▼瀹屾垚锛屼簨浠� + * + * @param data + */ + @Async + public void onInoutComplete(InoutData data) { + //DO Nothing + } + + /** + * 鍒濆鍖栧ぇ灞� + * + * @param companyId 缁勭粐缂栫爜 + * @param deptId 鍒嗗簱缂栫爜 + * @param progress 娴佺▼鐜妭 + */ + @Async + public void initInoutScreen(String companyId, String deptId, String progress) { + if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN + .getCode())) { + WebSocketServer.contextOnLineMap.put(BizType.SCREEN.getCode(), + false); + } + if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT + .getCode())) { + WebSocketServer.contextOnLineMap.put( + BizType.SCREEN_INOUT.getCode(), false); + } + if (null == WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK + .getCode())) { + WebSocketServer.contextOnLineMap.put( + BizType.SCREEN_CHECK.getCode(), false); + } + + if (WebSocketServer.contextOnLineMap.get(BizType.SCREEN.getCode()) + || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_INOUT + .getCode()) + || WebSocketServer.contextOnLineMap.get(BizType.SCREEN_CHECK + .getCode())) { + + + // 鎺ㄩ�佸埌澶у睆 + List<InoutData> curList = inoutService.getListInoutCache(deptId); + + List<InoutData> completeList = inoutService.getCompleteListInoutCache(deptId); + + notifyInoutScreen(companyId, deptId, curList, completeList); + } + } + + private void notifyInoutScreen(String companyId, String deptId, List<InoutData> curList, List<InoutData> completeList) { + InoutSumDto dto = new InoutSumDto(); + if (null != curList) { + for (InoutData data : curList) { + if (InoutConstant.TYPE_IN.equals(data.getType())) { + dto.setInSumNum(dto.getInSumNum() + 1); + } + if (InoutConstant.TYPE_OUT.equals(data.getType())) { + dto.setOutSumNum(dto.getOutSumNum() + 1); + } + dto.setCompanyId(companyId); + dto.setDeptId(deptId); + } + } + + if (null != completeList) { + for (InoutData data : completeList) { + if (InoutConstant.TYPE_IN.equals(data.getType())) { + dto.setInSumNum(dto.getInSumNum() + 1); + dto.setInComplateNum(dto.getInComplateNum() + 1); + } + if (InoutConstant.TYPE_OUT.equals(data.getType())) { + dto.setOutSumNum(dto.getOutSumNum() + 1); + dto.setOutComplateNum(dto.getOutComplateNum() + 1); + } + dto.setCompanyId(data.getCompanyId()); + dto.setDeptId(data.getDeptId()); + } + } + + // 璋冩暣灏佽 + if (dto.getInSumNum() > 0) { + dto.setPerInComplate(dto.getInComplateNum() / Double.valueOf(dto.getInSumNum())); + dto.setPerInComplate(NumberUtil.keepPrecision( + dto.getPerInComplate() * 100, 1)); + } + + if (dto.getOutSumNum() > 0) { + dto.setPerOutComplate(dto.getOutComplateNum() / Double.valueOf(dto.getOutSumNum())); + dto.setPerOutComplate(NumberUtil.keepPrecision( + dto.getPerOutComplate() * 100, 1)); + } + + if (null == dto.getCompanyId()) { + dto.setCompanyId(ContextUtil.getDefaultCompanyId()); + } + + // 鎺ㄩ�佺患鍚堢鐞嗗ぇ灞� + WebSocketPacket packet = new WebSocketPacket(); + packet.setBizId("IN_OUT_SUMMARY"); + packet.setCompanyId(dto.getCompanyId()); + packet.setDeptId(dto.getDeptId()); + packet.setBizType(BizType.SCREEN.getCode()); + packet.setData(dto); + WebSocketServer.sendByBizTag(packet); + + // 鎺ㄩ�佸嚭鍏ュ簱澶у睆 + dto.setCurList(curList); + dto.setComplateList(completeList); + packet.setBizType(BizType.SCREEN.getCode()); + packet.setBizTag(WebSocketPacket.BIZ_TAG_SCREEN_INOUT); + WebSocketServer.sendByBizTag(packet); + + // 鎺ㄩ�佸寲楠屽ぇ灞� + packet.setBizType(BizType.SCREEN.getCode()); + packet.setBizTag(WebSocketPacket.BIZ_TAG_SCREEN_CHECK); + WebSocketServer.sendByBizTag(packet); + } + + /** + * 鑾峰彇绉伴噸鎻掍欢閰嶇疆淇℃伅 + * + * @param companyId + * @param deptId + * @param sort + * @param type + * @return + */ + public InoutConf getInoutConf(String companyId, String deptId, String sort, String type) { + + // 鑾峰彇鍑哄叆搴撻厤缃俊鎭� + List<InoutConf> listInoutConf = inoutCommonService.getCacheInoutConf(companyId, deptId); + + if (null == listInoutConf) return null; + + InoutConf result = null; + + for (InoutConf conf : listInoutConf) { + if (sort.equals(conf.getSort()) && type.equals(conf.getType())) { + result = conf; + break; + } + } + + if (null == result) return null; + + return result; + } + + } -- Gitblit v1.9.3