bug修改

master
LAPTOP-S9HJSOEB\昊天 9 months ago
parent befae82898
commit 0fedc117bf

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

@ -14,7 +14,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
*/ */
public interface GlobalErrorCodeConstants { public interface GlobalErrorCodeConstants {
ErrorCode SUCCESS = new ErrorCode(0, "成功"); ErrorCode SUCCESS = new ErrorCode(200, "成功");
// ========== 客户端错误段 ========== // ========== 客户端错误段 ==========

@ -70,6 +70,15 @@ public class CommonResult<T> implements Serializable {
return result; return result;
} }
public static <T> CommonResult<T> success(T data, String message) {
CommonResult<T> result = new CommonResult<>();
result.code = GlobalErrorCodeConstants.SUCCESS.getCode();
result.data = data;
result.msg = "";
result.message = message;
return result;
}
public static boolean isSuccess(Integer code) { public static boolean isSuccess(Integer code) {
return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode()); return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode());
} }

@ -7,6 +7,8 @@ import cn.iocoder.yudao.framework.web.core.filter.DemoFilter;
import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler;
import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler; import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler;
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
import jakarta.annotation.Resource;
import jakarta.servlet.Filter;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@ -25,8 +27,7 @@ import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import jakarta.annotation.Resource; import java.time.Duration;
import jakarta.servlet.Filter;
@AutoConfiguration @AutoConfiguration
@EnableConfigurationProperties(WebProperties.class) @EnableConfigurationProperties(WebProperties.class)
@ -125,7 +126,11 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.build();
return restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(5000)) // 连接超时 5秒
.setReadTimeout(Duration.ofMillis(20000)) // 读取超时 20秒
.build();
} }
} }

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.camera.lib.camera.CameraModFactory;
import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.camera.CameraService;
import cn.iocoder.yudao.module.camera.service.channel.CameraChannel; import cn.iocoder.yudao.module.camera.service.channel.CameraChannel;
import cn.iocoder.yudao.module.system.service.dict.DictDataService; import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@ -38,11 +39,6 @@ public class MyInitializer {
private CameraService cameraService; private CameraService cameraService;
public static void main(String[] args) {
MyInitializer myInitializer = new MyInitializer();
myInitializer.checkAndAddRtspProxies();
}
@Scheduled(fixedRate = 30000) // 每分钟执行一次 @Scheduled(fixedRate = 30000) // 每分钟执行一次
@ -54,6 +50,15 @@ public class MyInitializer {
zlmConf(list); zlmConf(list);
cameraLogin(list); cameraLogin(list);
} }
@PostConstruct
public void init() {
// 应用启动时执行一次
try {
checkAndAddRtspProxies();
} catch (Exception e) {
e.printStackTrace();
}
}
@Resource CameraModFactory cameraModFactory; @Resource CameraModFactory cameraModFactory;
private void cameraLogin(List<CameraDO> list) { private void cameraLogin(List<CameraDO> list) {

@ -342,7 +342,6 @@ public class cameraControlController {
cameraControlModule.ptzControlIrisDecEnd(cameraDO.getId(),0); cameraControlModule.ptzControlIrisDecEnd(cameraDO.getId(),0);
return success("ok"); return success("ok");
} }
@PostMapping("/pic") @PostMapping("/pic")
@Operation(summary = "立刻拍照") @Operation(summary = "立刻拍照")
@Parameter(name = "id", description = "球机id", required = true) @Parameter(name = "id", description = "球机id", required = true)

@ -10,6 +10,7 @@ public class RtspSessionResponse {
private int code; private int code;
private List<RtspSession> data; private List<RtspSession> data;
private boolean result;
@Data @Data
public static class RtspSession { public static class RtspSession {

@ -29,14 +29,15 @@ public class CameraConnMap {
public static NetSDKLib.LLong getConnIdDh(Integer cameraId){ public static NetSDKLib.LLong getConnIdDh(Integer cameraId){
return connDh.get(cameraId); return connDh.get(cameraId);
} }
public static void disConn(Integer cameraId){
conn.remove(cameraId);
}
public static Integer getConnId(Integer cameraId){ public static Integer getConnId(Integer cameraId){
return conn.get(cameraId); return conn.get(cameraId);
} }
public static void disConn(Integer cameraId){
conn.remove(cameraId);
}
public static Integer getCameraIdByLoginId(Integer lLong){ public static Integer getCameraIdByLoginId(Integer lLong){

@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
@Service @Service
public class CameraModFactory { public class CameraModFactory {
@Autowired @Autowired
private ApplicationContext context; private ApplicationContext context;

@ -69,7 +69,7 @@ public class DhControlModuleImpl implements CameraModule {
//先注销,再登录 //先注销,再登录
if(CameraConnMap.getConnIdDh(cameraId)!=null){ if(CameraConnMap.getConnIdDh(cameraId)!=null){
if (loginout(cameraId)){ if (loginout(cameraId)){
log.info("hik camera:{}注销",cameraId); log.info("dh camera:{}注销",cameraId);
} }
} }
init(); init();
@ -91,6 +91,10 @@ public class DhControlModuleImpl implements CameraModule {
@Override @Override
public Boolean loginout(Integer cameraId) { public Boolean loginout(Integer cameraId) {
if (CameraConnMap.getConnId(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return true;
}
CameraConnMap.disConnDh(cameraId); CameraConnMap.disConnDh(cameraId);
netSdk.CLIENT_Logout(CameraConnMap.getConnIdDh(cameraId)); netSdk.CLIENT_Logout(CameraConnMap.getConnIdDh(cameraId));
@ -107,6 +111,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up start"); log.info("up start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
@ -115,6 +123,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) { public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up end"); log.info("up end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_UP_CONTROL,
@ -125,6 +137,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("down start"); log.info("down start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
@ -132,6 +148,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) { public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("down end"); log.info("down end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_DOWN_CONTROL,
@ -142,6 +162,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("left start"); log.info("left start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
@ -149,6 +173,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) { public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("left end"); log.info("left end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_LEFT_CONTROL,
@ -159,6 +187,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("right start"); log.info("right start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
@ -167,6 +199,10 @@ public class DhControlModuleImpl implements CameraModule {
public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) { public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) {
log.info("right end"); log.info("right end");
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_RIGHT_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -178,6 +214,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up left start"); log.info("up left start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
@ -185,6 +225,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) { public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up left end"); log.info("up left end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTTOP,
@ -195,6 +239,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up right start"); log.info("up right start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
@ -202,6 +250,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) { public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info("up right end"); log.info("up right end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTTOP,
@ -212,6 +264,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info(" left down start"); log.info(" left down start");
Boolean ok = netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, Boolean ok = netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
@ -223,6 +279,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) { public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info(" left down end"); log.info(" left down end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_LEFTDOWN,
@ -233,6 +293,10 @@ public class DhControlModuleImpl implements CameraModule {
* *
*/ */
public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) { public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int lParam1, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info(" right down start"); log.info(" right down start");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
@ -240,6 +304,10 @@ public class DhControlModuleImpl implements CameraModule {
} }
public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) { public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
log.info(" right down end"); log.info(" right down end");
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN, NetSDKLib.NET_EXTPTZ_ControlType.NET_EXTPTZ_RIGHTDOWN,
@ -250,12 +318,20 @@ public class DhControlModuleImpl implements CameraModule {
* + * +
*/ */
public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) { public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_ADD_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -265,12 +341,20 @@ public class DhControlModuleImpl implements CameraModule {
* - * -
*/ */
public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) { public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_ZOOM_DEC_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -280,12 +364,21 @@ public class DhControlModuleImpl implements CameraModule {
* + * +
*/ */
public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) { public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_ADD_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -295,12 +388,20 @@ public class DhControlModuleImpl implements CameraModule {
* - * -
*/ */
public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) { public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_FOCUS_DEC_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -310,12 +411,22 @@ public class DhControlModuleImpl implements CameraModule {
* + * +
*/ */
public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) { public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_ADD_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -325,12 +436,22 @@ public class DhControlModuleImpl implements CameraModule {
* - * -
*/ */
public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2) { public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int lParam2) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
0, lParam2, 0, 0); 0, lParam2, 0, 0);
} }
public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) { public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) {
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID, return netSdk.CLIENT_DHPTZControlEx(CameraConnMap.getConnIdDh(cameraId), nChannelID,
NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL, NetSDKLib.NET_PTZ_ControlType.NET_PTZ_APERTURE_DEC_CONTROL,
0, 0, 0, 1); 0, 0, 0, 1);
@ -350,6 +471,10 @@ public class DhControlModuleImpl implements CameraModule {
// } // }
// return ok; // return ok;
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return false;
}
PathUtil.checkDirc(realPath); PathUtil.checkDirc(realPath);
if (!netSdk.CLIENT_CapturePictureEx(CameraConnMap.getConnIdDh(cameraId), realPath, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) { if (!netSdk.CLIENT_CapturePictureEx(CameraConnMap.getConnIdDh(cameraId), realPath, NetSDKLib.NET_CAPTURE_FORMATS.NET_CAPTURE_JPEG)) {
System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint()); System.err.printf("CLIENT_CapturePicture Failed!" + ToolKits.getErrorCodePrint());
@ -381,6 +506,10 @@ public class DhControlModuleImpl implements CameraModule {
NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE(); NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE();
net_out_download_by_data_type.write(); net_out_download_by_data_type.write();
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("error camera conn is null,cameraId:{}",cameraId);
return;
}
NetSDKLib.LLong l = netSdk.CLIENT_DownloadByDataType(CameraConnMap.getConnIdDh(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000); NetSDKLib.LLong l = netSdk.CLIENT_DownloadByDataType(CameraConnMap.getConnIdDh(cameraId), download_by_data_type.getPointer(), net_out_download_by_data_type.getPointer(), 8000);
if(l.longValue() != 0){ if(l.longValue() != 0){
log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{},status:{},cameraId:{}", path, start, end, LocalDateTime.now(),l.longValue(),cameraId); log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{},status:{},cameraId:{}", path, start, end, LocalDateTime.now(),l.longValue(),cameraId);
@ -399,6 +528,11 @@ public class DhControlModuleImpl implements CameraModule {
*/ */
public void ptz(Integer ptzId, String name, Integer cameraId) { public void ptz(Integer ptzId, String name, Integer cameraId) {
int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL; int dwzCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_SET_CONTROL;
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("toPtz error camera conn is null,ptzId:{},cameraId:{}",ptzId,cameraId);
return;
}
Boolean ok = netSdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnIdDh(cameraId), 0, dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name)); Boolean ok = netSdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnIdDh(cameraId), 0, dwzCommand, 0, ptzId, 0, 0, ToolKits.GetGBKStringToPointer(name));
if (!ok) { if (!ok) {
log.error("ptz error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId); log.error("ptz error :{},cameraId:{}", ToolKits.getErrorCodePrint(),cameraId);
@ -415,6 +549,11 @@ public class DhControlModuleImpl implements CameraModule {
public void toPtz(Integer ptzId, Integer cameraId) { public void toPtz(Integer ptzId, Integer cameraId) {
log.info("to ptz,ptzId:{},cameraId:{}",ptzId,cameraId); log.info("to ptz,ptzId:{},cameraId:{}",ptzId,cameraId);
int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL; int dwPTZCommand = NetSDKLib.NET_PTZ_ControlType.NET_PTZ_POINT_MOVE_CONTROL;
if (CameraConnMap.getConnIdDh(cameraId) == null){
log.error("toPtz error camera conn is null,ptzId:{},cameraId:{}",ptzId,cameraId);
return;
}
Boolean ok = netSdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnIdDh(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null); Boolean ok = netSdk.CLIENT_DHPTZControlEx2(CameraConnMap.getConnIdDh(cameraId), 0, dwPTZCommand, 0, ptzId, 0, 0, null);
if (!ok) { if (!ok) {
log.error("toPtz error, cameraId:{},ptzId:{},errorCode:{}", cameraId, ptzId,ToolKits.getErrorCodePrint()); log.error("toPtz error, cameraId:{},ptzId:{},errorCode:{}", cameraId, ptzId,ToolKits.getErrorCodePrint());

@ -19,7 +19,11 @@ public final class Res {
} }
public static Res string() { public static Res string() {
if (StringBundleHolder.instance == null) {
StringBundleHolder.instance = new Res();
return StringBundleHolder.instance; return StringBundleHolder.instance;
}else return StringBundleHolder.instance;
} }
public static enum LanguageType { public static enum LanguageType {
@ -2490,8 +2494,6 @@ public final class Res {
} }
///////////// Human Number Statistic /////////////// ///////////// Human Number Statistic ///////////////
public String getHumanNumberStatistic() { public String getHumanNumberStatistic() {
@ -2544,6 +2546,7 @@ public final class Res {
public String getVTOAlarmEventRoomNo(){ public String getVTOAlarmEventRoomNo(){
return bundle.getString("VTO_ALARM_EVENT_ROOM_NO"); return bundle.getString("VTO_ALARM_EVENT_ROOM_NO");
} }
public String getVTOAlarmEventCardNo(){ public String getVTOAlarmEventCardNo(){
return bundle.getString("VTO_ALARM_EVENT_CARD_NO"); return bundle.getString("VTO_ALARM_EVENT_CARD_NO");
} }
@ -2551,117 +2554,153 @@ public final class Res {
public String getVTOAlarmEventTime(){ public String getVTOAlarmEventTime(){
return bundle.getString("VTO_ALARM_EVENT_TIME"); return bundle.getString("VTO_ALARM_EVENT_TIME");
} }
public String getVTOAlarmEventOpenMethod(){ public String getVTOAlarmEventOpenMethod(){
return bundle.getString("VTO_ALARM_EVENT_OPEN_METHOD"); return bundle.getString("VTO_ALARM_EVENT_OPEN_METHOD");
} }
public String getVTOAlarmEventStatus(){ public String getVTOAlarmEventStatus(){
return bundle.getString("VTO_ALARM_EVENT_STATUS"); return bundle.getString("VTO_ALARM_EVENT_STATUS");
} }
public String getVTORealLoadRoomNO(){ public String getVTORealLoadRoomNO(){
return bundle.getString("VTO_REAL_LOAD_ROOM_NO"); return bundle.getString("VTO_REAL_LOAD_ROOM_NO");
} }
public String getVTORealLoadCardNo(){ public String getVTORealLoadCardNo(){
return bundle.getString("VTO_REAL_LOAD_CARD_NO"); return bundle.getString("VTO_REAL_LOAD_CARD_NO");
} }
public String getVTORealLoadTime(){ public String getVTORealLoadTime(){
return bundle.getString("VTO_REAL_LOAD_TIME"); return bundle.getString("VTO_REAL_LOAD_TIME");
} }
public String getVTORealLoadEventInfo(){ public String getVTORealLoadEventInfo(){
return bundle.getString("VTO_REAL_LOAD_EVENT_INFO"); return bundle.getString("VTO_REAL_LOAD_EVENT_INFO");
} }
public String getVTOOperateManagerTitle(){ public String getVTOOperateManagerTitle(){
return bundle.getString("VTO_OPERATE_MANAGER_TITLE"); return bundle.getString("VTO_OPERATE_MANAGER_TITLE");
} }
public String getInputRoomNo(){ public String getInputRoomNo(){
return bundle.getString("INPUT_ROOM_NO"); return bundle.getString("INPUT_ROOM_NO");
} }
public String getRoomNoExceedLength(){ public String getRoomNoExceedLength(){
return bundle.getString("ROOM_NO_EXCEED_LENGTH"); return bundle.getString("ROOM_NO_EXCEED_LENGTH");
} }
public String getVTOOperateManagerRecNo(){ public String getVTOOperateManagerRecNo(){
return bundle.getString("VTO_OPERATE_MANAGER_REC_NO"); return bundle.getString("VTO_OPERATE_MANAGER_REC_NO");
} }
public String getVTOOperateManagerRoomNo(){ public String getVTOOperateManagerRoomNo(){
return bundle.getString("VTO_OPERATE_MANAGER_ROOM_NO"); return bundle.getString("VTO_OPERATE_MANAGER_ROOM_NO");
} }
public String getVTOOperateManagerCardNo(){ public String getVTOOperateManagerCardNo(){
return bundle.getString("VTO_OPERATE_MANAGER_CARD_NO"); return bundle.getString("VTO_OPERATE_MANAGER_CARD_NO");
} }
public String getVTOOperateManagerFingerPrintData(){ public String getVTOOperateManagerFingerPrintData(){
return bundle.getString("VTO_OPERATE_MANAGER_FINGER_PRINT_DATA"); return bundle.getString("VTO_OPERATE_MANAGER_FINGER_PRINT_DATA");
} }
public String getVTOOperateInfoTitle(){ public String getVTOOperateInfoTitle(){
return bundle.getString("VTO_OPERATE_INFO_TITLE"); return bundle.getString("VTO_OPERATE_INFO_TITLE");
} }
public String getVTOOperateCollectionFingerPrintTitle(){ public String getVTOOperateCollectionFingerPrintTitle(){
return bundle.getString("VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE"); return bundle.getString("VTO_OPERATE_COLLECTION_FINGER_PRINT_TITLE");
} }
public String getDoorOpen(){ public String getDoorOpen(){
return bundle.getString("DOOR_OPEN"); return bundle.getString("DOOR_OPEN");
} }
public String getDoorClose(){ public String getDoorClose(){
return bundle.getString("DOOR_CLOSE"); return bundle.getString("DOOR_CLOSE");
} }
public String getEventOperate(){ public String getEventOperate(){
return bundle.getString("EVENT_OPERATE"); return bundle.getString("EVENT_OPERATE");
} }
public String getStartRealLoad(){ public String getStartRealLoad(){
return bundle.getString("START_REAL_LOAD_PIC"); return bundle.getString("START_REAL_LOAD_PIC");
} }
public String getStopRealLoad(){ public String getStopRealLoad(){
return bundle.getString("STOP_REAL_LOAD_PIC"); return bundle.getString("STOP_REAL_LOAD_PIC");
} }
public String getAlarmEvent(){ public String getAlarmEvent(){
return bundle.getString("ALARM_EVENT"); return bundle.getString("ALARM_EVENT");
} }
public String getRealLoadEvent(){ public String getRealLoadEvent(){
return bundle.getString("REAL_LOAD_EVENT"); return bundle.getString("REAL_LOAD_EVENT");
} }
public String getCollectionResult(){ public String getCollectionResult(){
return bundle.getString("COLLECTION_RESULT"); return bundle.getString("COLLECTION_RESULT");
} }
public String getNeedFingerPrint(){ public String getNeedFingerPrint(){
return bundle.getString("NEED_FINGER_PRINT"); return bundle.getString("NEED_FINGER_PRINT");
} }
public String getFaceInfo(){ public String getFaceInfo(){
return bundle.getString("FACE_INFO"); return bundle.getString("FACE_INFO");
} }
public String getOpen(){ public String getOpen(){
return bundle.getString("OPEN"); return bundle.getString("OPEN");
} }
///////////////////////////////////点阵屏设置/////////////////////////////////////、 ///////////////////////////////////点阵屏设置/////////////////////////////////////、
public static String getmatrixScreen() { public static String getmatrixScreen() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return bundle.getString("MATRIX_SCREEN"); return bundle.getString("MATRIX_SCREEN");
} }
public String getPassingState(){ public String getPassingState(){
return bundle.getString("PASSING_STATE"); return bundle.getString("PASSING_STATE");
} }
public String getPassingCar(){ public String getPassingCar(){
return bundle.getString("PASSING_CAR"); return bundle.getString("PASSING_CAR");
} }
public String getNoCar(){ public String getNoCar(){
return bundle.getString("NO_CAR"); return bundle.getString("NO_CAR");
} }
public String getInTime(){ public String getInTime(){
return bundle.getString("IN_TIME"); return bundle.getString("IN_TIME");
} }
public String getOutTime(){ public String getOutTime(){
return bundle.getString("OUT_TIME"); return bundle.getString("OUT_TIME");
} }
public String getPlateNumber(){ public String getPlateNumber(){
return bundle.getString("PLATE_NUMBER"); return bundle.getString("PLATE_NUMBER");
} }
public String getCarOwner(){ public String getCarOwner(){
return bundle.getString("CAR_OWNER"); return bundle.getString("CAR_OWNER");
} }
public String getParkingTime(){ public String getParkingTime(){
return bundle.getString("PARKING_TIME"); return bundle.getString("PARKING_TIME");
} }
public String getUserType(){ public String getUserType(){
return bundle.getString("USER_TYPE"); return bundle.getString("USER_TYPE");
} }
public String getMonthlyCardUser(){ public String getMonthlyCardUser(){
return bundle.getString("MONTHLY_CARD_USER"); return bundle.getString("MONTHLY_CARD_USER");
} }
@ -2721,15 +2760,21 @@ public final class Res {
public String getCostomInfo(){ public String getCostomInfo(){
return bundle.getString("CUSTOM_INFORMATION"); return bundle.getString("CUSTOM_INFORMATION");
} }
public String getVTO() {return bundle.getString("VTO");} public String getVTO() {return bundle.getString("VTO");}
public String getSCADA() {return bundle.getString("SCADA");} public String getSCADA() {return bundle.getString("SCADA");}
public String getTrafficAllowList(){return bundle.getString("TRAFFIC_ALLOW_LIST");} public String getTrafficAllowList(){return bundle.getString("TRAFFIC_ALLOW_LIST");}
public String getModifyCardFaceFailed(){ public String getModifyCardFaceFailed(){
return bundle.getString("MODIFY_CARD_FACE_FAILED"); return bundle.getString("MODIFY_CARD_FACE_FAILED");
} }
public String getRemoveCardFaceFailed(){ public String getRemoveCardFaceFailed(){
return bundle.getString("REMOVE_CARD_FACE_FAILED"); return bundle.getString("REMOVE_CARD_FACE_FAILED");
} }
public String getDownLoadPicture(){ public String getDownLoadPicture(){
return bundle.getString("DOWNLOAD_PICTURE"); return bundle.getString("DOWNLOAD_PICTURE");
} }
@ -2745,8 +2790,11 @@ public final class Res {
public String getEndSearch(){ public String getEndSearch(){
return bundle.getString("END_SEARCH"); return bundle.getString("END_SEARCH");
} }
public String getRemoteOpenDoor(){return bundle.getString("REMOTE_OPEN_DOOR");} public String getRemoteOpenDoor(){return bundle.getString("REMOTE_OPEN_DOOR");}
public String getQueryCardExistFailed(){return bundle.getString("QUERY_CARD_EXIST_FAILED");} public String getQueryCardExistFailed(){return bundle.getString("QUERY_CARD_EXIST_FAILED");}
public String getFindCardExist(){return bundle.getString("CARD_EXIST");} public String getFindCardExist(){return bundle.getString("CARD_EXIST");}
@ -2829,52 +2877,82 @@ public final class Res {
public String getModifyFail(){return bundle.getString("MODIFY_FAIL"); } public String getModifyFail(){return bundle.getString("MODIFY_FAIL"); }
public String getUploadSuccess(){return bundle.getString("UPLOAD_SUCCESS"); } public String getUploadSuccess(){return bundle.getString("UPLOAD_SUCCESS"); }
public String getUploadFail(){return bundle.getString("UPLOAD_FAIL"); } public String getUploadFail(){return bundle.getString("UPLOAD_FAIL"); }
public String getUploading(){return bundle.getString("UPLOADING"); } public String getUploading(){return bundle.getString("UPLOADING"); }
public String getSureUpload(){return bundle.getString("SURE_UPLOAD"); } public String getSureUpload(){return bundle.getString("SURE_UPLOAD"); }
public String getEnterQueryData(){return bundle.getString("ENTER_QUERY_DATA"); } public String getEnterQueryData(){return bundle.getString("ENTER_QUERY_DATA"); }
public String getScreenNumber(){return bundle.getString("SCREEN_NUMBER");} public String getScreenNumber(){return bundle.getString("SCREEN_NUMBER");}
public String getContain(){return bundle.getString("TEXT_CONTENT");} public String getContain(){return bundle.getString("TEXT_CONTENT");}
public String getContainType(){return bundle.getString("TEXT_CONTENT_TYPE");} public String getContainType(){return bundle.getString("TEXT_CONTENT_TYPE");}
public String getContainColor(){return bundle.getString("TEXT_CONTENT_COLOR");} public String getContainColor(){return bundle.getString("TEXT_CONTENT_COLOR");}
public String getScrollType(){return bundle.getString("SCROLL_TYPE");} public String getScrollType(){return bundle.getString("SCROLL_TYPE");}
public String getScrollSpeed(){return bundle.getString("SCROLL_SPEED");} public String getScrollSpeed(){return bundle.getString("SCROLL_SPEED");}
public String getGreen(){return bundle.getString("GREEN");} public String getGreen(){return bundle.getString("GREEN");}
public String getRed(){return bundle.getString("RED");} public String getRed(){return bundle.getString("RED");}
public String getYellow(){return bundle.getString("YELLOW");} public String getYellow(){return bundle.getString("YELLOW");}
public String getWhite(){return bundle.getString("WHITE");} public String getWhite(){return bundle.getString("WHITE");}
public String getOrdinary(){return bundle.getString("ORDINARY");} public String getOrdinary(){return bundle.getString("ORDINARY");}
public String getQRCode(){return bundle.getString("QR_CODE");} public String getQRCode(){return bundle.getString("QR_CODE");}
public String getLocalTime(){return bundle.getString("LOCAL_TIME");} public String getLocalTime(){return bundle.getString("LOCAL_TIME");}
public String getResource(){return bundle.getString("RESOURCE");} public String getResource(){return bundle.getString("RESOURCE");}
public String getNoRolling(){return bundle.getString("NOT_ROLLING");} public String getNoRolling(){return bundle.getString("NOT_ROLLING");}
public String getScrollLeftAndRight(){return bundle.getString("SCROLL_LEFT_AND_RIGHT");} public String getScrollLeftAndRight(){return bundle.getString("SCROLL_LEFT_AND_RIGHT");}
public String getScrollTopAndDown(){return bundle.getString("SCROLL_UP_AND_DOWN");} public String getScrollTopAndDown(){return bundle.getString("SCROLL_UP_AND_DOWN");}
public String getNumericString(){return bundle.getString("NUMBER_STRING");} public String getNumericString(){return bundle.getString("NUMBER_STRING");}
public String getVoiceText(){return bundle.getString("VOICE_TEXT");} public String getVoiceText(){return bundle.getString("VOICE_TEXT");}
public String getIssued(){return bundle.getString("ISSUED");} public String getIssued(){return bundle.getString("ISSUED");}
public String getPrompt(){return bundle.getString("PROMPT");} public String getPrompt(){return bundle.getString("PROMPT");}
public String getDeviceName(){return bundle.getString("DEVICE_NAME");} public String getDeviceName(){return bundle.getString("DEVICE_NAME");}
public String getPointID(){return bundle.getString("POINT_ID");} public String getPointID(){return bundle.getString("POINT_ID");}
public String getPointName(){return bundle.getString("POINT_NAME");} public String getPointName(){return bundle.getString("POINT_NAME");}
public String getIfValidSignalPoint(){return bundle.getString("IF_VALID_SIGNAL_POINT");} public String getIfValidSignalPoint(){return bundle.getString("IF_VALID_SIGNAL_POINT");}
public String getAlarmDescribe(){return bundle.getString("ALARM_DESCRIBE");} public String getAlarmDescribe(){return bundle.getString("ALARM_DESCRIBE");}
public String getAlarmDelay(){return bundle.getString("ALARM_DELAY");} public String getAlarmDelay(){return bundle.getString("ALARM_DELAY");}
public String getAlarmLevel(){return bundle.getString("ALARM_LEVEL");} public String getAlarmLevel(){return bundle.getString("ALARM_LEVEL");}
public String getAlarmTime(){return bundle.getString("ALARM_TIME");} public String getAlarmTime(){return bundle.getString("ALARM_TIME");}
public String getAlarmType(){return bundle.getString("ALARM_TYPE");} public String getAlarmType(){return bundle.getString("ALARM_TYPE");}
public String getCollectTime(){return bundle.getString("COLLECT_TIME");} public String getCollectTime(){return bundle.getString("COLLECT_TIME");}
public String getJing(){return bundle.getString("JING");} public String getJing(){return bundle.getString("JING");}
public String getJin(){return bundle.getString("JIN");} public String getJin(){return bundle.getString("JIN");}
public String getJi(){return bundle.getString("JI");} public String getJi(){return bundle.getString("JI");}
} }

@ -56,13 +56,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int dwPTZCommand,int dwStop) public boolean ptzControlUpStart(Integer cameraId, int nChannelID, int dwPTZCommand,int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 0);
} }
public boolean ptzControlUpEnd(Integer cameraId, int nChannelID) public boolean ptzControlUpEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_UP, 1);
} }
@ -71,13 +81,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 0);
} }
public boolean ptzControlDownEnd(Integer cameraId, int nChannelID) public boolean ptzControlDownEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.TILT_DOWN, 1);
} }
@ -86,13 +106,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlLeftStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 0);
} }
public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID) public boolean ptzControlLeftEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_LEFT, 1);
} }
/** /**
@ -100,13 +130,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlRightStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 0);
} }
public boolean ptzControlRightEnd(Integer cameraId, int nChannelID) public boolean ptzControlRightEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.PAN_RIGHT, 1);
} }
/** /**
@ -114,13 +154,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlLeftUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 0);
} }
public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID) public boolean ptzControlLeftUpEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_LEFT, 1);
} }
@ -129,14 +179,24 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlRightUpStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 0);
} }
public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID) public boolean ptzControlRightUpEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.UP_RIGHT, 1);
} }
/** /**
@ -144,7 +204,12 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlLeftDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
Boolean ok = hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 0); Boolean ok = hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 0);
if(!ok){ if(!ok){
log.error("error:{},cameraId:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId); log.error("error:{},cameraId:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId);
@ -153,7 +218,12 @@ public class HikControlModuleImpl implements CameraModule {
} }
public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID) public boolean ptzControlLeftDownEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_LEFT, 1);
} }
/** /**
@ -161,13 +231,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop) public boolean ptzControlRightDownStart(Integer cameraId, int nChannelID, int dwPTZCommand, int dwStop)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 0);
} }
public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID) public boolean ptzControlRightDownEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.DOWN_RIGHT, 1);
} }
@ -176,13 +256,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlZoomAddStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 0);
} }
public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID) public boolean ptzControlZoomAddEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_IN, 1);
} }
@ -191,13 +281,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlZoomDecStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 0);
} }
public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID) public boolean ptzControlZoomDecEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.ZOOM_OUT, 1);
} }
/** /**
@ -205,13 +305,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlFocusAddStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 0);
} }
public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID) public boolean ptzControlFocusAddEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_NEAR, 1);
} }
/** /**
@ -219,13 +329,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlFocusDecStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 0);
} }
public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID) public boolean ptzControlFocusDecEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.FOCUS_FAR, 1);
} }
@ -234,13 +354,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlIrisAddStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 0);
} }
public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID) public boolean ptzControlIrisAddEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 1); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_OPEN, 1);
} }
@ -249,13 +379,23 @@ public class HikControlModuleImpl implements CameraModule {
*/ */
public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int dwPTZCommand) public boolean ptzControlIrisDecStart(Integer cameraId, int nChannelID, int dwPTZCommand)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 0); return hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 0);
} }
public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID) public boolean ptzControlIrisDecEnd(Integer cameraId, int nChannelID)
{ {
int lUserId = CameraConnMap.getConnId(cameraId);
Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
Boolean ok = hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 1); Boolean ok = hcNetsdk.NET_DVR_PTZControl_Other(lUserId, 1, HCNetSDK.IRIS_CLOSE, 1);
return ok; return ok;
} }
@ -263,7 +403,11 @@ public class HikControlModuleImpl implements CameraModule {
public boolean pic(Integer cameraId, int nChannelID, String path) public boolean pic(Integer cameraId, int nChannelID, String path)
{ {
PathUtil.checkDirc(path); PathUtil.checkDirc(path);
int lUserId = CameraConnMap.getConnId(cameraId); Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
return false;
}
short wPicSize = 3; short wPicSize = 3;
short wPicQuality = 0; short wPicQuality = 0;
HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality); HCNetSDK.NET_DVR_JPEGPARA jpegpara = new HCNetSDK.NET_DVR_JPEGPARA(wPicSize, wPicQuality);
@ -284,9 +428,13 @@ public class HikControlModuleImpl implements CameraModule {
endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond());
log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime()); log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime());
int lUserID = CameraConnMap.getConnId(cameraId);
int result = hcNetsdk.NET_DVR_GetFileByTime(lUserID, 1, startTime, endTime, path); Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
}
int result = hcNetsdk.NET_DVR_GetFileByTime(lUserId, 1, startTime, endTime, path);
if (result == -1) { if (result == -1) {
log.error("downloadMp4 error code:{},cameraId:{},path:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId,path); log.error("downloadMp4 error code:{},cameraId:{},path:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId,path);
} else { } else {
@ -306,9 +454,13 @@ public class HikControlModuleImpl implements CameraModule {
endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond()); endTime.setTime(end.getYear(), end.getMonthValue(), end.getDayOfMonth(), end.getHour(), end.getMinute(), end.getSecond());
log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime()); log.info("start download mp4 path:{} ,cameraId:{},start_time{}end_time:{}",path,cameraId,startTime.toStringTime(),endTime.toStringTime());
int lUserID = CameraConnMap.getConnId(cameraId);
int result = hcNetsdk.NET_DVR_GetFileByTime(lUserID, channel, startTime, endTime, path); Integer lUserId = CameraConnMap.getConnId(cameraId);
if (lUserId == null){
log.error("pic error:lUserId is null,cameraId:{}",cameraId);
}
int result = hcNetsdk.NET_DVR_GetFileByTime(lUserId, channel, startTime, endTime, path);
if (result == -1) { if (result == -1) {
log.error("downloadMp4 error code:{},cameraId:{},path:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId,path); log.error("downloadMp4 error code:{},cameraId:{},path:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId,path);
} else { } else {
@ -435,6 +587,11 @@ public class HikControlModuleImpl implements CameraModule {
public void toPtz(Integer ptzId, Integer cameraId) public void toPtz(Integer ptzId, Integer cameraId)
{ {
int dwPTZCommand = HCNetSDK.GOTO_PRESET; int dwPTZCommand = HCNetSDK.GOTO_PRESET;
if (CameraConnMap.getConnId(cameraId) == null){
log.error("toPtz error camera conn is null,ptzId:{},cameraId:{}",ptzId,cameraId);
return;
}
Boolean ok = hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId), 1, dwPTZCommand, ptzId); Boolean ok = hcNetsdk.NET_DVR_PTZPreset_Other(CameraConnMap.getConnId(cameraId), 1, dwPTZCommand, ptzId);
if(!ok){ if(!ok){
log.error("toPtz error:{},cameraId:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId); log.error("toPtz error:{},cameraId:{}", hcNetsdk.NET_DVR_GetLastError(),cameraId);
@ -478,7 +635,7 @@ public class HikControlModuleImpl implements CameraModule {
m_strLoginInfo.wPort = (short) m_nPort; m_strLoginInfo.wPort = (short) m_nPort;
m_strLoginInfo.bUseAsynLogin = false; //是否异步登录0- 否1- 是 m_strLoginInfo.bUseAsynLogin = true; //是否异步登录0- 否1- 是
m_strLoginInfo.write(); m_strLoginInfo.write();
HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息 HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo30 = new HCNetSDK.NET_DVR_DEVICEINFO_V30();//设备信息

@ -15,6 +15,7 @@ import cn.iocoder.yudao.module.camera.dal.entity.TreeVo;
import cn.iocoder.yudao.module.camera.framework.netty.intellBlink.CameraPhotoDecoder; import cn.iocoder.yudao.module.camera.framework.netty.intellBlink.CameraPhotoDecoder;
import cn.iocoder.yudao.module.camera.framework.netty.intellBlink.CameraPhotoInfo; import cn.iocoder.yudao.module.camera.framework.netty.intellBlink.CameraPhotoInfo;
import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.camera.CameraService;
import cn.iocoder.yudao.module.camera.service.streamingMedia.ZLMediaKitService;
import cn.iocoder.yudao.module.camera.service.street.StreetService; import cn.iocoder.yudao.module.camera.service.street.StreetService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@ -45,6 +47,8 @@ public class CameraController {
@Resource @Resource
private StreetService streetService; private StreetService streetService;
@Resource
ZLMediaKitService zLMediaKitService;
@PostMapping("/logisticsResults") @PostMapping("/logisticsResults")
@Operation(summary = "货位状态查看") @Operation(summary = "货位状态查看")
@PermitAll @PermitAll
@ -66,6 +70,17 @@ public class CameraController {
} }
@PostMapping("/pic")
@Operation(summary = "拍照")
@PermitAll
public CommonResult<String> pic(@Valid @RequestBody CameraSaveReqVO createReqVO) {
CameraDO cameraDO = cameraService.getCamera(createReqVO.getId());
zLMediaKitService.pic(cameraDO,"D://data/"+new Date().getTime()+".jpg");
return success("");
}
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建相机") @Operation(summary = "创建相机")
@PreAuthorize("@ss.hasPermission('logistics:camera:create')") @PreAuthorize("@ss.hasPermission('logistics:camera:create')")

@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
public class CheckLogPageReqVO extends PageParam { public class CheckLogPageReqVO extends PageParam {
@Schema(description = "盘点批次号", example = "001_11") @Schema(description = "盘点批次号", example = "001_11")
private String lotnum; private String batchNumber;
@Schema(description = "层") @Schema(description = "层")
private Short row; private Short row;

@ -21,7 +21,7 @@ public class CheckLogRespVO {
@Schema(description = "盘点批次号", example = "001_11") @Schema(description = "盘点批次号", example = "001_11")
@ExcelProperty("盘点批次号") @ExcelProperty("盘点批次号")
private String lotnum; private String batchNumber;
@Schema(description = "层") @Schema(description = "层")
@ExcelProperty("层") @ExcelProperty("层")

@ -0,0 +1,89 @@
package cn.iocoder.yudao.module.camera.controller.admin.kesc;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.service.plc.PLCService;
import cn.iocoder.yudao.module.system.service.sse.SseClient;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.annotation.security.PermitAll;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Tag(name = "管理后台 - 随行盘点")
@RestController
@RequestMapping("/logistics/StockController")
@Validated
@Slf4j
public class StockControlController {
@Resource
PLCService plcService;
@Resource
SseClient sseClient;
@PostMapping("/openCamera")
@Operation(summary = "随行盘点开始任务")
@ResponseBody
@PermitAll
public CommonResult<String> openCamera(@RequestBody KsecDataInfo kescEntity){
kescEntity = kescEntity.fromBySRMNumber(kescEntity);
// 随行开始
if (kescEntity.getCmdName().equals("B1")){
plcService.orderStart(kescEntity);
}else if (kescEntity.getCmdName().equals("E")){
// 盘点
plcService.checkStart(kescEntity);
}
return CommonResult.success("","OK");
}
@PostMapping("/updateResult")
@Operation(summary = "模拟随行盘点结果返回状态")
@ResponseBody
@PermitAll
public CommonResult<KsecDataInfo> updateResult( KsecDataInfo kescEntity){
log.info("模拟随行盘点结果返回状态:{}",kescEntity);
return CommonResult.success(kescEntity,"OK");
}
@PostMapping("/setUpdateStatus")
@Operation(summary = "随行盘点更新状态")
@ResponseBody
@PermitAll
public CommonResult<KsecDataInfo> setUpdateStatus(KsecDataInfo kescEntity){
log.info("随行盘点更新状态:{}",kescEntity);
return CommonResult.success(kescEntity,"OK");
}
@PostMapping("/updateStatus")
@Operation(summary = "随行盘点更新状态")
@ResponseBody
@PermitAll
public CommonResult<String> updateStatus(@RequestBody KsecDataInfo kescEntity){
if (kescEntity.getCmdName().equals("B2")){
// 随行结束
plcService.orderStop(kescEntity.getTaskId());
}else if (kescEntity.getCmdName().startsWith("E")){
// 盘点操作
plcService.check(kescEntity.getTaskId(),kescEntity.getCmdName());
if (kescEntity.getCmdName().equals("E3")){
plcService.checkStop(kescEntity.getTaskId());
}
}else if (kescEntity.getCmdName().startsWith("C")){
plcService.action(kescEntity.getTaskId(),kescEntity.getCmdName());
}
return CommonResult.success("","OK");
}
}

@ -21,6 +21,10 @@ public class OrderRespVO {
@ExcelProperty("开始时间") @ExcelProperty("开始时间")
private LocalDateTime startTime; private LocalDateTime startTime;
@Schema(description = "结束时间")
@ExcelProperty("结束时间")
private LocalDateTime endTime;
@Schema(description = "巷道id") @Schema(description = "巷道id")
@ExcelProperty("巷道id") @ExcelProperty("巷道id")
private String srmNumber; private String srmNumber;

@ -0,0 +1,93 @@
package cn.iocoder.yudao.module.camera.controller.admin.shelfCode;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodePageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodeRespVO;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodeSaveReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import cn.iocoder.yudao.module.camera.service.shelfCode.ShelfCodeService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ShelfCode")
@RestController
@RequestMapping("/logistics/ShelfCode")
@Validated
public class ShelfCodeController {
@Resource
private ShelfCodeService shelfCodeService;
@PostMapping("/create")
@Operation(summary = "创建ShelfCode")
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:create')")
public CommonResult<Integer> createShelfCode(@Valid @RequestBody ShelfCodeSaveReqVO createReqVO) {
return success(shelfCodeService.createShelfCode(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新ShelfCode")
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:update')")
public CommonResult<Boolean> updateShelfCode(@Valid @RequestBody ShelfCodeSaveReqVO updateReqVO) {
shelfCodeService.updateShelfCode(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除ShelfCode")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:delete')")
public CommonResult<Boolean> deleteShelfCode(@RequestParam("id") Integer id) {
shelfCodeService.deleteShelfCode(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得ShelfCode")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:query')")
public CommonResult<ShelfCodeRespVO> getShelfCode(@RequestParam("id") Integer id) {
ShelfCodeDO ShelfCode = shelfCodeService.getShelfCode(id);
return success(BeanUtils.toBean(ShelfCode, ShelfCodeRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得ShelfCode分页")
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:query')")
public CommonResult<PageResult<ShelfCodeRespVO>> getShelfCodePage(@Valid ShelfCodePageReqVO pageReqVO) {
PageResult<ShelfCodeDO> pageResult = shelfCodeService.getShelfCodePage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ShelfCodeRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出ShelfCode Excel")
@PreAuthorize("@ss.hasPermission('logistics:ShelfCode:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportShelfCodeExcel(@Valid ShelfCodePageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ShelfCodeDO> list = shelfCodeService.getShelfCodePage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "ShelfCode.xls", "数据", ShelfCodeRespVO.class,
BeanUtils.toBean(list, ShelfCodeRespVO.class));
}
}

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Schema(description = "管理后台 - ShelfCode分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ShelfCodePageReqVO extends PageParam {
@Schema(description = "巷道id", example = "8923")
private Integer streetId;
@Schema(description = "方向")
private Integer direction;
@Schema(description = "separation")
@ExcelProperty("separation")
private String separation;
@Schema(description = "货架号")
@ExcelProperty("货架号")
private String shelfCode;
}

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - ShelfCode Response VO")
@Data
@ExcelIgnoreUnannotated
public class ShelfCodeRespVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3186")
@ExcelProperty("id")
private Integer id;
@Schema(description = "巷道id", example = "8923")
@ExcelProperty("巷道id")
private Integer streetId;
@Schema(description = "方向")
@ExcelProperty(value = "方向", converter = DictConvert.class)
@DictFormat("direction") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer direction;
@Schema(description = "separation")
@ExcelProperty("separation")
private String separation;
@Schema(description = "货架号")
@ExcelProperty("货架号")
private String shelfCode;
}

@ -0,0 +1,28 @@
package cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - ShelfCode新增/修改 Request VO")
@Data
public class ShelfCodeSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3186")
private Integer id;
@Schema(description = "巷道id", example = "8923")
private Integer streetId;
@Schema(description = "方向")
private Integer direction;
@Schema(description = "separation")
@ExcelProperty("separation")
private String separation;
@Schema(description = "货架号")
@ExcelProperty("货架号")
private String shelfCode;
}

@ -182,17 +182,19 @@ public class StockController {
dictCode.set(scanStatus, scanCode.get(finalScan)); dictCode.set(scanStatus, scanCode.get(finalScan));
dictWmsCode.set(scanStatus, scanWmsCode.get(finalScan)); dictWmsCode.set(scanStatus, scanWmsCode.get(finalScan));
} else {
System.out.println("Fields not found in the hierarchy.");
}
// 打印 ScanStatus 的字段值 // 打印 ScanStatus 的字段值
System.out.println("ScanStatus Code: " + dictCode.get(scanStatus)); System.out.println("ScanStatus Code: " + dictCode.get(scanStatus));
System.out.println("ScanStatus WMS Code: " + dictWmsCode.get(scanStatus)); System.out.println("ScanStatus WMS Code: " + dictWmsCode.get(scanStatus));
} else {
System.out.println("Fields not found in the hierarchy.");
}
} catch (NoSuchFieldException e) { } catch (NoSuchFieldException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace();
throw new RuntimeException(e); throw new RuntimeException(e);
} }
scanStatuses.add(scanStatus); scanStatuses.add(scanStatus);

@ -18,7 +18,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
public class StockPageReqVO extends PageParam { public class StockPageReqVO extends PageParam {
@Schema(description = "盘点批次好") @Schema(description = "盘点批次好")
private String lotnum; private String batchNumber;
@Schema(description = "工单任务号") @Schema(description = "工单任务号")
private String orderNum; private String orderNum;

@ -18,7 +18,7 @@ public class StockRespVO {
@Schema(description = "盘点批次好") @Schema(description = "盘点批次好")
@ExcelProperty("盘点批次好") @ExcelProperty("盘点批次好")
private String lotnum; private String batchNumber;
@Schema(description = "工单任务号") @Schema(description = "工单任务号")
@ExcelProperty("工单任务号") @ExcelProperty("工单任务号")

@ -13,7 +13,7 @@ public class StockSaveReqVO {
private Long id; private Long id;
@Schema(description = "盘点批次好") @Schema(description = "盘点批次好")
private String lotnum; private String batchNumber;
@Schema(description = "工单任务号") @Schema(description = "工单任务号")
private String orderNum; private String orderNum;

@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO
import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.framework.light.LightFactory; import cn.iocoder.yudao.module.camera.framework.light.LightFactory;
import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService; import cn.iocoder.yudao.module.camera.service.lightsource.LightSourceService;
@ -139,6 +140,14 @@ public class StreetController {
public CommonResult<List<RfidDO>> getRFIDListByStreetId(@RequestParam("streetId") Integer streetId) { public CommonResult<List<RfidDO>> getRFIDListByStreetId(@RequestParam("streetId") Integer streetId) {
return success(streetService.getRFIDListByStreetId(streetId)); return success(streetService.getRFIDListByStreetId(streetId));
} }
@GetMapping("/shelfCode/list-by-street-id")
@Operation(summary = "获得货架列表")
@Parameter(name = "streetId", description = "巷道id")
@PreAuthorize("@ss.hasPermission('logistics:street:query')")
public CommonResult<List<ShelfCodeDO>> getShelfCodeListByStreetId(@RequestParam("streetId") Integer streetId) {
return success(streetService.getShelfCodeListByStreetId(streetId));
}
@GetMapping("/lightSource/open") @GetMapping("/lightSource/open")
@Operation(summary = "开启全部光源") @Operation(summary = "开启全部光源")
@Parameter(name = "streetId", description = "巷道id") @Parameter(name = "streetId", description = "巷道id")

@ -30,16 +30,16 @@ public class CheckLogDO extends BaseDO {
/** /**
* *
*/ */
private String lotnum; private String batchNumber;
/** /**
* *
* * <p>
* {@link TODO direction } * {@link TODO direction }
*/ */
private Integer direction; private Integer direction;
/** /**
* *
* * <p>
* {@link TODO side } * {@link TODO side }
*/ */
private Integer side; private Integer side;
@ -79,7 +79,7 @@ public class CheckLogDO extends BaseDO {
/** /**
* *
* * <p>
* {@link TODO check_status } * {@link TODO check_status }
*/ */
private Integer status; private Integer status;
@ -130,5 +130,14 @@ public class CheckLogDO extends BaseDO {
*/ */
private String statusVision; private String statusVision;
private String shelfCode;
private String pltCode;
private String itemCode;
private String countNumber;
private String wmsShelfCode;
private String wmsPltCode;
private String wmsItemCode;
private String wmsCountNumber;
} }

@ -32,6 +32,7 @@ public class OrderDO extends BaseDO {
private String srmNumber ; private String srmNumber ;
private String cmdName ; private String cmdName ;
private String taskId ; private String taskId ;
private String shelfCode;
private int fromSide ; private int fromSide ;
private int fromDirection ; private int fromDirection ;
private int fromColumn ; private int fromColumn ;
@ -49,7 +50,7 @@ public class OrderDO extends BaseDO {
private String trayCode ; private String trayCode ;
@TableField(exist = false) @TableField(exist = false)
private String lotnum ; private String batchNumber ;
private String storageCode ; private String storageCode ;
private LocalDateTime createTime ; private LocalDateTime createTime ;
private LocalDateTime endTime ; private LocalDateTime endTime ;

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.glassfish.jaxb.core.v2.TODO;
/**
* RFID DO
*
* @author
*/
@TableName("logistics_shelf_Code")
@KeySequence("logistics_shelf_Code_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShelfCodeDO extends BaseDO {
/**
* id
*/
@TableId
private Integer id;
/**
* id
*/
private Integer streetId;
/**
*
*
* {@link TODO direction }
*/
private Integer direction;
/**
* 2 1
*/
private Integer separation;
private String shelfCode;
}

@ -40,7 +40,7 @@ public class StockDO extends BaseDO {
/** /**
* *
*/ */
private String lotnum; private String batchNumber;
/** /**
* *
*/ */
@ -87,6 +87,7 @@ public class StockDO extends BaseDO {
* *
*/ */
private Integer side; private Integer side;
private Integer separation;
/** /**
* *
*/ */
@ -137,7 +138,7 @@ public class StockDO extends BaseDO {
/** /**
* taskId * taskId
*/ */
private String taskWmsId; private String taskId;
/** /**
* *
*/ */
@ -151,4 +152,14 @@ public class StockDO extends BaseDO {
*/ */
private String statusVision; private String statusVision;
private String shelfCode;
private String pltCode;
private String itemCode;
private String countNumber;
private String wmsShelfCode;
private String wmsPltCode;
private String wmsItemCode;
private String wmsCountNumber;
} }

@ -0,0 +1,111 @@
package cn.iocoder.yudao.module.camera.dal.entity;
import lombok.Data;
/**
*
*
*/
@Data
public class WarehouseOperation {
/**
* B= C= D= E=
*/
private String type;
/**
*
*/
private String SRMNumber;
/**
*
*/
private String cmdName;
/**
*
*/
private String taskId;
/**
* 1= 2=
*/
private Integer fromSide;
/**
* 1= 2=
*/
private Integer fromDirection;
/**
*
*/
private Integer fromColumn;
/**
*
*/
private Integer fromRow;
/**
* 2 1
*/
private Integer fromSeparation;
/**
* 1= 2=
*/
private Integer toSide;
/**
* 1= 2=
*/
private Integer toDirection;
/**
*
*/
private Integer toColumn;
/**
*
*/
private Integer toRow;
/**
* 2 1
*/
private Integer toSeparation;
/**
* typeD使
*/
private String warnCode;
/**
*
*/
private String shelfCode;
/**
*
*/
private String pltCode;
/**
*
*/
private String batchNumber;
/**
*
*/
private String itemCode;
/**
*
*/
private String countNumber;
}

@ -16,7 +16,7 @@ import org.apache.ibatis.annotations.Mapper;
public interface CheckLogMapper extends BaseMapperX<CheckLogDO> { public interface CheckLogMapper extends BaseMapperX<CheckLogDO> {
default PageResult<CheckLogDO> selectPage(CheckLogPageReqVO reqVO) { default PageResult<CheckLogDO> selectPage(CheckLogPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<CheckLogDO>() return selectPage(reqVO, new LambdaQueryWrapperX<CheckLogDO>()
.eqIfPresent(CheckLogDO::getLotnum, reqVO.getLotnum()) .eqIfPresent(CheckLogDO::getBatchNumber, reqVO.getBatchNumber())
.eqIfPresent(CheckLogDO::getRow, reqVO.getRow()) .eqIfPresent(CheckLogDO::getRow, reqVO.getRow())
.eqIfPresent(CheckLogDO::getColumn, reqVO.getColumn()) .eqIfPresent(CheckLogDO::getColumn, reqVO.getColumn())
.eqIfPresent(CheckLogDO::getStreetId, reqVO.getStreetId()) .eqIfPresent(CheckLogDO::getStreetId, reqVO.getStreetId())
@ -25,8 +25,7 @@ public interface CheckLogMapper extends BaseMapperX<CheckLogDO> {
.eqIfPresent(CheckLogDO::getDirection, reqVO.getDirection()) .eqIfPresent(CheckLogDO::getDirection, reqVO.getDirection())
.eqIfPresent(CheckLogDO::getSide, reqVO.getSide()) .eqIfPresent(CheckLogDO::getSide, reqVO.getSide())
.eqIfPresent(CheckLogDO::getStatus, reqVO.getStatus()) .eqIfPresent(CheckLogDO::getStatus, reqVO.getStatus())
.orderByDesc(CheckLogDO::getCreateTime));
.orderByDesc(CheckLogDO::getId));
} }
} }

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.camera.dal.mysql.shelfCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodePageReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* RFID Mapper
*
* @author
*/
@Mapper
public interface ShelfCodeMapper extends BaseMapperX<ShelfCodeDO> {
default PageResult<ShelfCodeDO> selectPage(ShelfCodePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ShelfCodeDO>()
.eqIfPresent(ShelfCodeDO::getStreetId, reqVO.getStreetId())
.eqIfPresent(ShelfCodeDO::getDirection, reqVO.getDirection())
.eqIfPresent(ShelfCodeDO::getShelfCode, reqVO.getShelfCode())
.eqIfPresent(ShelfCodeDO::getSeparation, reqVO.getSeparation())
.orderByDesc(ShelfCodeDO::getId));
}
default List<ShelfCodeDO> selectListByStreetId(Integer streetId) {
return selectList(ShelfCodeDO::getStreetId, streetId);
}
default int deleteByStreetId(Integer streetId) {
return delete(ShelfCodeDO::getStreetId, streetId);
}
}

@ -17,7 +17,7 @@ public interface StockMapper extends BaseMapperX<StockDO> {
default PageResult<StockDO> selectPage(StockPageReqVO reqVO) { default PageResult<StockDO> selectPage(StockPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<StockDO>() return selectPage(reqVO, new LambdaQueryWrapperX<StockDO>()
.eqIfPresent(StockDO::getLotnum, reqVO.getLotnum()) .eqIfPresent(StockDO::getBatchNumber, reqVO.getBatchNumber())
.eqIfPresent(StockDO::getOrderNum, reqVO.getOrderNum()) .eqIfPresent(StockDO::getOrderNum, reqVO.getOrderNum())
.eqIfPresent(StockDO::getCheckNum, reqVO.getCheckNum()) .eqIfPresent(StockDO::getCheckNum, reqVO.getCheckNum())
.eqIfPresent(StockDO::getCode, reqVO.getCode()) .eqIfPresent(StockDO::getCode, reqVO.getCode())
@ -40,7 +40,7 @@ public interface StockMapper extends BaseMapperX<StockDO> {
.betweenIfPresent(StockDO::getExportTime, reqVO.getExportTime()) .betweenIfPresent(StockDO::getExportTime, reqVO.getExportTime())
.eqIfPresent(StockDO::getSubtag, reqVO.getSubtag()) .eqIfPresent(StockDO::getSubtag, reqVO.getSubtag())
.eqIfPresent(StockDO::getReply, reqVO.getReply()) .eqIfPresent(StockDO::getReply, reqVO.getReply())
.eqIfPresent(StockDO::getTaskWmsId, reqVO.getTaskWmsId()) .eqIfPresent(StockDO::getTaskId, reqVO.getTaskWmsId())
.eqIfPresent(StockDO::getAddre, reqVO.getAddre()) .eqIfPresent(StockDO::getAddre, reqVO.getAddre())
.eqIfPresent(StockDO::getCheckId, reqVO.getCheckId()) .eqIfPresent(StockDO::getCheckId, reqVO.getCheckId())
.eqIfPresent(StockDO::getStatusVision, reqVO.getStatusVision()) .eqIfPresent(StockDO::getStatusVision, reqVO.getStatusVision())

@ -1,10 +1,13 @@
package cn.iocoder.yudao.module.camera.framework.netty.ksec; package cn.iocoder.yudao.module.camera.framework.netty.ksec;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
@Data @Data
public class KsecDataInfo { public class KsecDataInfo {
@JsonProperty("SRMNumber")
private String SRMNumber; private String SRMNumber;
private String cmdName; private String cmdName;
@ -19,7 +22,7 @@ public class KsecDataInfo {
private Integer fromSide; private Integer fromSide;
private Integer fromSeparation; private Integer fromSeparation = 1;
private Integer toColumn; private Integer toColumn;
@ -29,26 +32,78 @@ public class KsecDataInfo {
private Integer toSide; private Integer toSide;
private Integer toSeparation; private Integer toSeparation = 1;
private String code;
private String warnCode; private String warnCode;
private Integer ackStatus; private Integer ackStatus;
private String code;
private String trayCode; private String trayCode;
private String category; private String category;
private String count; private String count;
//品规码
private String itemCode;
//货架码
private String shelfCode;
// 托盘码
private String pltCode;
//数量
private String countNumber;
private String wmsCode;
private String wmsTrayCode;
private String wmsCategory;
private String wmsCount;
//品规码
private String wmsItemCode;
//货架码
private String wmsShelfCode;
// 托盘码
private String wmsPltCode;
//数量
private String wmsCountNumber;
/** /**
* *
*/ */
private String lotnum; private String batchNumber;
public KsecDataInfo fromBySRMNumber(KsecDataInfo data) {
if (data.getSRMNumber()!=null && data.getSRMNumber().length()>=13){
// 001为巷道号
//2为左右方向
//003为行
//004为列
//000为申请货位
data.fromDirection = Integer.valueOf(data.getSRMNumber().substring(3, 4));
data.fromRow = Integer.valueOf(data.getSRMNumber().substring(4, 7));
data.fromColumn = Integer.valueOf(data.getSRMNumber().substring(7, 10));
data.SRMNumber = data.getSRMNumber().substring(0, 3);
}
return data;
}
// public static void main(String[] args) {
// KsecDataInfo data = new KsecDataInfo();
// data.SRMNumber = "0012003004000";
// data = KsecDataInfo.fromBySRMNumber(data);
// System.out.println(data.toString());
// }
public static KsecDataInfo toFrom(KsecDataInfo data) { public static KsecDataInfo toFrom(KsecDataInfo data) {
data.fromColumn = data.toColumn; data.fromColumn = data.toColumn;
@ -58,4 +113,24 @@ public class KsecDataInfo {
data.fromSeparation = data.toSeparation; data.fromSeparation = data.toSeparation;
return data; return data;
} }
public KsecDataInfo toWMSData() {
this.wmsCode = this.code;
this.wmsTrayCode = this.trayCode;
this.wmsCategory = this.category;
this.wmsCount = this.count;
this.wmsItemCode = this.itemCode;
this.wmsShelfCode = this.shelfCode;
this.wmsPltCode = this.pltCode;
this.wmsCountNumber = this.countNumber;
this.code = null;
this.trayCode = null;
this.category = null;
this.count = null;
this.itemCode = null;
this.shelfCode = null;
this.pltCode = null;
this.countNumber = null;
return this;
}
} }

@ -25,11 +25,6 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
private static final Logger tcpLogger = LoggerFactory.getLogger("tcp"); private static final Logger tcpLogger = LoggerFactory.getLogger("tcp");
public static void setLastLotnum(String lotnum){
lastLotnum = lotnum;
}
private static String lastLotnum;
public static Map<String,KsecDataInfo> ksecInfoMap = new HashMap<>(); public static Map<String,KsecDataInfo> ksecInfoMap = new HashMap<>();
@ -99,7 +94,7 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
plcService.orderStart(dataInfo); plcService.orderStart(dataInfo);
}else if(dataInfo.getCmdName().equals("B2")){ }else if(dataInfo.getCmdName().equals("B2")){
plcService.orderStop(dataInfo); // plcService.orderStop(dataInfo);
} }
log.debug("receieve heart "); log.debug("receieve heart ");
}else if (Cmd.C.name().equals(ksecInfo.getType())) { }else if (Cmd.C.name().equals(ksecInfo.getType())) {
@ -107,14 +102,14 @@ public class KsecDecoder extends DelimiterBasedFrameDecoder {
//动作 //动作
String code = dataInfo.getCmdName(); String code = dataInfo.getCmdName();
log.info("action code,{},orderInfo:{}", code, dataInfo.toString()); log.info("action code,{},orderInfo:{}", code, dataInfo.toString());
plcService.action(dataInfo); // plcService.action(dataInfo);
} else if (Cmd.D.name().equals(ksecInfo.getType())) { } else if (Cmd.D.name().equals(ksecInfo.getType())) {
} else if (Cmd.E.name().equals(ksecInfo.getType())) { } else if (Cmd.E.name().equals(ksecInfo.getType())) {
//智能盘点 //智能盘点
dataInfo.setCount("正常"); dataInfo.setCount("正常");
plcService.check( dataInfo); // plcService.check( dataInfo);
} }

@ -5,7 +5,6 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.HikPythonEntity; import cn.iocoder.yudao.module.camera.dal.entity.HikPythonEntity;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.service.resources.URLResourcesService; import cn.iocoder.yudao.module.camera.service.resources.URLResourcesService;
import cn.iocoder.yudao.module.camera.service.scan.ScanService; import cn.iocoder.yudao.module.camera.service.scan.ScanService;
import cn.iocoder.yudao.module.system.service.dict.DictDataService; import cn.iocoder.yudao.module.system.service.dict.DictDataService;
@ -102,6 +101,9 @@ public class HikFlaskApiService implements ScanService {
String responseBody = Objects.requireNonNull(response.body()).string(); String responseBody = Objects.requireNonNull(response.body()).string();
return gson.fromJson(responseBody, HikPythonEntity.class); return gson.fromJson(responseBody, HikPythonEntity.class);
}catch (Exception e){
log.error("Error occurred while calling /api/picComputeAll", e);
return null;
} }
} }
@ -135,7 +137,7 @@ public class HikFlaskApiService implements ScanService {
URLResourcesService urlResourcesService; URLResourcesService urlResourcesService;
// 识别结果是正常或缺件 // 识别结果是正常或缺件
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
ScanData scanData = new ScanData(); ScanData scanData = new ScanData();
@ -144,9 +146,9 @@ public class HikFlaskApiService implements ScanService {
try { try {
scanData.setCode("缺件"); scanData.setCode("缺件");
HikPythonEntity hikPythonEntity = picComputeAll(dataInfo.getCategory(),urlPath); HikPythonEntity hikPythonEntity = picComputeAll(stockDO.getWmsItemCode(),urlPath);
System.out.println(hikPythonEntity); System.out.println(hikPythonEntity);
if (hikPythonEntity != null){ if (hikPythonEntity != null && !hikPythonEntity.getStatus().equals("ERROR")){
if (hikPythonEntity.getLack()!= null && hikPythonEntity.getLack()) { if (hikPythonEntity.getLack()!= null && hikPythonEntity.getLack()) {
}else { }else {
scanData.setCode("正常"); scanData.setCode("正常");

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.camera.service.cameraio;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.camera.controller.admin.cameraio.vo.CameraIoPageReqVO; import cn.iocoder.yudao.module.camera.controller.admin.cameraio.vo.CameraIoPageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.cameraio.vo.CameraIoSaveReqVO; import cn.iocoder.yudao.module.camera.controller.admin.cameraio.vo.CameraIoSaveReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.cameraio.CameraIoDO; import cn.iocoder.yudao.module.camera.dal.dataobject.cameraio.CameraIoDO;
@ -30,7 +31,12 @@ public class CameraIoServiceImpl extends ServiceImpl<CameraIoMapper, CameraIoDO>
public Integer createCameraIo(CameraIoSaveReqVO createReqVO) { public Integer createCameraIo(CameraIoSaveReqVO createReqVO) {
// 插入 // 插入
CameraIoDO cameraIo = BeanUtils.toBean(createReqVO, CameraIoDO.class); CameraIoDO cameraIo = BeanUtils.toBean(createReqVO, CameraIoDO.class);
if(cameraIoMapper.selectCount(new LambdaQueryWrapperX<CameraIoDO>().eq(CameraIoDO::getCode,createReqVO.getCode()).eq(CameraIoDO::getCameraId,createReqVO.getCameraId()))>0){
return cameraIo.getId();
}else {
cameraIoMapper.insert(cameraIo); cameraIoMapper.insert(cameraIo);
}
// 返回 // 返回
return cameraIo.getId(); return cameraIo.getId();
} }

@ -209,7 +209,7 @@ public class OrderServiceImpl implements OrderService {
seriesList.add(series); seriesList.add(series);
for (String date : data) { for (String date : data) {
Map<String, Long> countMap = map.get(street.getPlcId()); Map<String, Long> countMap = map.get(street.getPlcId());
Long count = countMap != null ? countMap.get(date) : 0L; Long count = (countMap != null && countMap.get(date) !=null ) ? countMap.get(date) : 0L;
series.getData().add(count); series.getData().add(count);
} }
} }

@ -5,12 +5,14 @@ import cn.iocoder.yudao.module.camera.framework.netty.streetAlgorithm.executor.A
public interface PLCService { public interface PLCService {
void action(KsecDataInfo dataInfo); void action(String taskId,String cmd);
void checkStart(KsecDataInfo dataInfo);
void checkStop(String taskId);
void orderStart(KsecDataInfo kescEntity); void orderStart(KsecDataInfo kescEntity);
void orderStop(KsecDataInfo kescEntity); void orderStop(String taskId);
void check(KsecDataInfo dataInfo); void check(String taskId, String cmd);
void stockSave(AlgorithmDelayTask algorithmDelayTask); void stockSave(AlgorithmDelayTask algorithmDelayTask);
} }

@ -1,15 +1,13 @@
package cn.iocoder.yudao.module.camera.service.plc; package cn.iocoder.yudao.module.camera.service.plc;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO; import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.cameraio.CameraIoDO; import cn.iocoder.yudao.module.camera.dal.dataobject.cameraio.CameraIoDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.checklog.CheckLogDO; import cn.iocoder.yudao.module.camera.dal.dataobject.checklog.CheckLogDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.order.OrderDO; import cn.iocoder.yudao.module.camera.dal.dataobject.order.OrderDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.resources.URLResourcesDo; import cn.iocoder.yudao.module.camera.dal.dataobject.resources.URLResourcesDo;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.stocklog.StockLogDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.KescEntity;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.dal.mysql.checklog.CheckLogMapper; import cn.iocoder.yudao.module.camera.dal.mysql.checklog.CheckLogMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.order.OrderMapper; import cn.iocoder.yudao.module.camera.dal.mysql.order.OrderMapper;
@ -19,7 +17,6 @@ import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.framework.netty.streetAlgorithm.executor.AlgorithmDelayTask; import cn.iocoder.yudao.module.camera.framework.netty.streetAlgorithm.executor.AlgorithmDelayTask;
import cn.iocoder.yudao.module.camera.framework.netty.streetAlgorithm.executor.GetPhotoDelayExecutor; import cn.iocoder.yudao.module.camera.framework.netty.streetAlgorithm.executor.GetPhotoDelayExecutor;
import cn.iocoder.yudao.module.camera.lib.camera.CameraModFactory; import cn.iocoder.yudao.module.camera.lib.camera.CameraModFactory;
import cn.iocoder.yudao.module.camera.lib.camera.TaskDelayExecutor;
import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.camera.CameraService;
import cn.iocoder.yudao.module.camera.service.cameraio.CameraIoService; import cn.iocoder.yudao.module.camera.service.cameraio.CameraIoService;
import cn.iocoder.yudao.module.camera.service.checklog.CheckLogService; import cn.iocoder.yudao.module.camera.service.checklog.CheckLogService;
@ -28,26 +25,34 @@ import cn.iocoder.yudao.module.camera.service.scan.ScanServiceFactory;
import cn.iocoder.yudao.module.camera.service.stock.StockService; import cn.iocoder.yudao.module.camera.service.stock.StockService;
import cn.iocoder.yudao.module.camera.service.streamingMedia.ZLMediaKitService; import cn.iocoder.yudao.module.camera.service.streamingMedia.ZLMediaKitService;
import cn.iocoder.yudao.module.camera.service.street.StreetService; import cn.iocoder.yudao.module.camera.service.street.StreetService;
import cn.iocoder.yudao.module.camera.service.threeInOneCode.ScanningGun;
import cn.iocoder.yudao.module.camera.util.PathUtil; import cn.iocoder.yudao.module.camera.util.PathUtil;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import cn.iocoder.yudao.module.system.service.dict.DictDataService; import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import cn.iocoder.yudao.module.system.service.sse.SseClient; import cn.iocoder.yudao.module.system.service.sse.SseClient;
import cn.iocoder.yudao.module.system.util.RedisUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import de.danielbechler.util.Strings; import de.danielbechler.util.Strings;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.*; import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Service @Service
@Slf4j @Slf4j
@ -105,7 +110,8 @@ public class PLCServiceImpl implements PLCService {
log.error("ptz not found ,code{},cameraId:{}", code, cameraDO.getId()); log.error("ptz not found ,code{},cameraId:{}", code, cameraDO.getId());
} }
} }
// public void plcService (KescEntity kescEntity){
// public void plcService (KescEntity kescEntity){
// //
// //
// //获取配置信息 // //获取配置信息
@ -118,8 +124,8 @@ public class PLCServiceImpl implements PLCService {
// //任务 // //任务
// if (Cmd.B1.name().equals(kescEntity.getData().getCmdName())) { // if (Cmd.B1.name().equals(kescEntity.getData().getCmdName())) {
// //昆船盘点模式下也会发B1 ,但是不会发送B2 // //昆船盘点模式下也会发B1 ,但是不会发送B2
// //这里判断下,是否存在盘点批次号 若存在既是盘点的B1,无需处理;若不存在lotnum则是随行的B1 // //这里判断下,是否存在盘点批次号 若存在既是盘点的B1,无需处理;若不存在batchNumber则是随行的B1
// if(StringUtils.isEmpty(kescEntity.getData().getLotnum())){ // if(StringUtils.isEmpty(kescEntity.getData().getBatchNumber())){
// //任务开始 旋转到原点位 // //任务开始 旋转到原点位
// gyrateCamera(kescEntity,Cmd.C5.name()); // gyrateCamera(kescEntity,Cmd.C5.name());
// //orderStart(kescEntity); // //orderStart(kescEntity);
@ -165,26 +171,99 @@ public class PLCServiceImpl implements PLCService {
// //
// } // }
// } // }
@Resource
RestTemplate restTemplate;
@Resource
RedisUtil redisUtil;
void setUpdateResult(String taskId) {
Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("base_conf");
if (dictDataList.get("cssc_update_result_api") != null) {
String url = dictDataList.get("cssc_update_result_api").getValue();
Integer count = Integer.valueOf(dictDataList.get("cssc_set_max_count").getValue());
Map<String, String> resultMap = redisUtil.hmget("stock:task:" + taskId);
setHttp(url, resultMap, count);
}
}
void setUpdateStatus(String taskId, String cmd) {
char secondChar = cmd.charAt(1); // 获取第二个字符
int number = Character.getNumericValue(secondChar); // 将字符转换为数字
cmd = "E" + (number + 1);
Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("base_conf");
if (dictDataList.get("cssc_update_status_api") != null) {
String url = dictDataList.get("cssc_update_status_api").getValue();
Integer count = Integer.valueOf(dictDataList.get("cssc_set_max_count").getValue());
Map<String, String> resultMap = new HashMap<>();
resultMap.put("cmdName", cmd);
resultMap.put("taskId", taskId);
setHttp(url, resultMap, count);
}
}
void setHttp(String url, Map<String, String> resultMap, Integer count) {
if (count == 0) {
return;
}
count--;
// 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "application/json"); // 设置 Content-Type 为 JSON
// 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
// 将对象转换为 JSON 字符串
try {
String jsonString = objectMapper.writeValueAsString(resultMap);
// 创建 HttpEntity
HttpEntity<String> entity = new HttpEntity<>(jsonString, headers);
log.info("request json: " + jsonString);
// 发起 POST 请求
ResponseEntity<String> response = restTemplate.exchange(
url, // 替换为你的 API 地址
HttpMethod.POST,
entity,
String.class
);
// 输出响应结果
log.info("Status Code: " + response.getStatusCode());
log.info("Response Body: " + response.getBody());
if (!response.getStatusCode().is2xxSuccessful()) {
setHttp(url, resultMap, count);
}
} catch (Exception e) {
e.printStackTrace();
setHttp(url, resultMap, count);
}
}
@Override @Override
public void action(KsecDataInfo dataInfo) { public void action(String taskId, String cmd) {
OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>() OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getTaskId, dataInfo.getTaskId()) .eq(OrderDO::getTaskId, taskId)
.orderByDesc(OrderDO::getCreateTime) .orderByDesc(OrderDO::getCreateTime)
.last("limit 1")); .last("limit 1"));
StreetDO street = streetService.getStreetByPlcId(dataInfo.getSRMNumber()); StreetDO street = streetService.getStreetByPlcId(order.getSrmNumber());
if (street == null) { if (street == null) {
log.error("street not found ,plcId :{}", dataInfo.getSRMNumber()); log.error("street not found ,plcId :{}", order.getSrmNumber());
return; return;
} }
//OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code); //OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code);
//判断是否拍照 //判断是否拍照
boolean needCapture = false; boolean needCapture = false;
String picCmd = dataInfo.getCmdName().substring(0, 2); String picCmd = cmd.substring(0, 2);
Integer direction = dataInfo.getFromDirection(); Integer direction = order.getFromDirection();
if (picCmd.equals("C4") || picCmd.equals("C3")) { if (picCmd.equals("C4") || picCmd.equals("C3")) {
needCapture = true; needCapture = true;
direction = dataInfo.getToDirection(); direction = order.getToDirection();
} else if (picCmd.equals("C1") || picCmd.equals("C2")) { } else if (picCmd.equals("C1") || picCmd.equals("C2")) {
needCapture = true; needCapture = true;
@ -193,27 +272,27 @@ public class PLCServiceImpl implements PLCService {
} }
String saveApiPath = dictDataService.parseDictData("base_conf", "data_api_path").getValue(); String saveApiPath = dictDataService.parseDictData("base_conf", "data_api_path").getValue();
KescEntity kescEntity = new KescEntity();
kescEntity.setData(dataInfo);
// 判断巷道有几个相机 如果只有一个,则调用一个,如果是两个,先判断是否有对拍设置决定那个相机拍摄 // 判断巷道有几个相机 如果只有一个,则调用一个,如果是两个,先判断是否有对拍设置决定那个相机拍摄
CameraDO camera = getCameraByLeftRight(street, direction); CameraDO camera = getCameraByLeftRight(street, direction);
// 调用预置点位 // 调用预置点位
gyrateCameraByCode(camera, picCmd); gyrateCameraByCode(camera, picCmd);
int time = Integer.parseInt(dictDataService.parseDictData("camera_conf", "delay_preset_time").getValue()); // int time = Integer.parseInt(dictDataService.parseDictData("camera_conf", "delay_preset_time").getValue());
try { // try {
Thread.sleep(time); // Thread.sleep(time);
} catch (InterruptedException e) { // } catch (InterruptedException e) {
e.printStackTrace(); // e.printStackTrace();
} // }
KsecDataInfo dataInfoData = BeanUtils.toBean(order, KsecDataInfo.class);
if (needCapture) { if (needCapture) {
String pathSrc = PathUtil.createFileName(dataInfo, street, picCmd, ".jpg"); String pathSrc = PathUtil.createFileName(dataInfoData, street, picCmd, ".jpg");
pathSrc = cameraCapture(camera, false, pathSrc, dictDataService.getDictDataList("camera_conf")); pathSrc = cameraCapture(camera, true, pathSrc, dictDataService.getDictDataList("camera_conf"));
order.setPics(Strings.hasText(order.getPics()) ? order.getPics() + ";" +saveApiPath+ pathSrc : saveApiPath+pathSrc); order.setPics(Strings.hasText(order.getPics()) ? order.getPics() + ";" + saveApiPath + pathSrc : saveApiPath + pathSrc);
orderMapper.updateById(order); orderMapper.updateById(order);
} }
//转向原点位 //转向原点位
gyrateCameraByCode(camera, "C5"); // gyrateCameraByCode(camera, "C5");
} }
@Resource @Resource
@ -227,20 +306,25 @@ public class PLCServiceImpl implements PLCService {
long timeout = 5000; long timeout = 5000;
@Override @Override
public void check(KsecDataInfo dataInfo) { public void checkStart(KsecDataInfo dataInfo) {
dataInfo.setCountNumber("正常");
dataInfo = dataInfo.toWMSData();
String saveApiPath = dictDataService.parseDictData("base_conf", "data_api_path").getValue(); String saveApiPath = dictDataService.parseDictData("base_conf", "data_api_path").getValue();
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
String uuid = UUID.randomUUID().toString(); String uuid = UUID.randomUUID().toString();
//头部拍照
StreetDO street = streetService.getStreetByPlcId(dataInfo.getSRMNumber()); StreetDO street = streetService.getStreetByPlcId(dataInfo.getSRMNumber());
sseClient.sendMessage(street.getPlcId()+"巷道开始盘点");
StockDO newStock = BeanUtils.toBean(dataInfo, StockDO.class);
// 获取记录 // 获取记录
StockDO stock = stockService.getOne( StockDO stock = stockService.getOne(
new QueryWrapper<StockDO>() new QueryWrapper<StockDO>()
.eq("direction", dataInfo.getFromDirection()) .eq("direction", dataInfo.getFromDirection())
.eq("side", dataInfo.getFromSide()) .eq("separation", dataInfo.getFromSeparation())
.eq("`row`", dataInfo.getFromRow()) .eq("`row`", dataInfo.getFromRow())
.eq("`column`", dataInfo.getFromColumn()) .eq("`column`", dataInfo.getFromColumn())
.eq("street_id", street.getId()) .eq("street_id", street.getId())
@ -248,118 +332,146 @@ public class PLCServiceImpl implements PLCService {
); );
if (stock == null) { if (stock == null) {
stock = StockDO.builder() stock = newStock;
.checkNum(dataInfo.getTaskId()) stock.setStreetId(street.getId());
.lotnum(dataInfo.getLotnum())
.streetId(street.getId()) stock.setCheckNum(dataInfo.getTaskId());
.direction(dataInfo.getFromDirection()) stock.setDirection(dataInfo.getFromDirection());
.side(dataInfo.getFromSide()) stock.setSide(dataInfo.getFromSide());
.row(dataInfo.getFromRow()) stock.setSeparation(dataInfo.getFromSeparation());
.status("0") stock.setRow(dataInfo.getFromRow());
.column(dataInfo.getFromColumn()) stock.setColumn(dataInfo.getFromColumn());
.exportTime(LocalDateTime.now()).build(); stock.setStatus("0");
} else {
stock.setLotnum(dataInfo.getLotnum());
stock.setExportTime(LocalDateTime.now()); stock.setExportTime(LocalDateTime.now());
stock.setCode(""); // 盘点数据保存
stock.setWmsCode("");
stock.setTrayCode("");
stock.setWmsCategory(""); } else {
stock.setCount("0"); newStock.setStreetId(street.getId());
stock.setWmsCount("0");
stock.setCategory(""); newStock.setCheckNum(dataInfo.getTaskId());
stock.setWmsTrayCode(""); newStock.setDirection(dataInfo.getFromDirection());
newStock.setSide(dataInfo.getFromSide());
newStock.setSeparation(dataInfo.getFromSeparation());
newStock.setRow(dataInfo.getFromRow());
newStock.setColumn(dataInfo.getFromColumn());
newStock.setId(stock.getId());
stock = newStock;
stock.setStatus("0"); stock.setStatus("0");
stock.setCheckNum(dataInfo.getTaskId());
stock.setExportTime(LocalDateTime.now());
// 将盘点数据保存
} }
stock.setCheckPic(uuid); stock.setCheckPic(uuid);
//拍照记录 //拍照记录
String pathSrc = PathUtil.createFileName(dataInfo, street, "E1", ".jpg"); String pathSrc = PathUtil.createFileName(dataInfo, street, "E1", ".jpg");
CameraDO camera = cameraService.getById(dataInfo.getFromDirection() == 1 ? street.getCamera1Id() : street.getCamera2Id()); CameraDO camera = cameraService.getById(dataInfo.getFromDirection() == 1 ? street.getCamera1Id() : street.getCamera2Id());
pathSrc = cameraCapture(camera, false, pathSrc, dictDataService.getDictDataList("camera_conf")); pathSrc = cameraCapture(camera, false, pathSrc, dictDataService.getDictDataList("camera_conf"));
urlResourcesService.save(URLResourcesDo.builder().url(saveApiPath+pathSrc).uuid(uuid).type("1").little("球机拍照").build()); urlResourcesService.save(URLResourcesDo.builder().url(saveApiPath + pathSrc).uuid(uuid).type("1").little("球机拍照").build());
// 先记录正常未盘点情况 // 先记录正常未盘点情况
stockService.saveOrUpdate(stock); stockService.saveOrUpdate(stock);
redisUtil.hset("stock:task:" + dataInfo.getTaskId(), "taskId", dataInfo.getTaskId());
checkLog(stock);
// StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun);
// threadPoolExecutor.execute(stockCheckRunnable);
//还原相机
long end = System.currentTimeMillis();
long s = end - startTime;
log.info("time:{}millisecond", s);
// //ocr识别
// AlgorithmDelayTask algorithmDelayTask = new AlgorithmDelayTask(dataInfo.getFromDirection(),street.getPlcId()
// ,dataInfo.getTaskId(),10000,code,"E1",dataInfo.getFromRow(),dataInfo.getFromColumn());
// getPhotoDelayExecutor.communicationFactory(algorithmDelayTask);
}
public void check(String taskId, String cmd) {
//根据扫码配置 获取扫码结果 //根据扫码配置 获取扫码结果
Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("scan_conf"); Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("scan_conf");
// 默认正确 Map<String, DictDataDO> csscStartList = dictDataService.getDictDataList("cssc_scan");
AtomicReference<String> status = new AtomicReference<>("2"); // 如果存在扫码情况,进行扫码
StockDO finalStock = stock; if (csscStartList.get(cmd) != null) {
List<CompletableFuture<ScanData>> futures = dictDataList.values().stream() String[] scanTypes = csscStartList.get(cmd).getValue().split(";");
.filter(dictDataDO -> !dictDataDO.getValue().equals("0")) StockDO stock = stockService.getOne(
.map(dictDataDO -> CompletableFuture.supplyAsync(() -> new QueryWrapper<StockDO>()
// 调用扫码服务,包含图片保存等不进行修改finalStock .eq("task_id", taskId)
scanServiceFactory.scan(dictDataDO.getValue(), street, dataInfo, finalStock) );
).thenApply(result -> { StreetDO street = streetService.getById(stock.getStreetId());
// 任务完成后,基于返回的结果进行操作 for (String scanType : scanTypes) {
// 如果有扫码结果,并且扫码结果为假,则修改状态为错误 DictDataDO dictDataDO = dictDataList.get(scanType);
// 获取字段对象 ScanData scanData = scanServiceFactory.scan(dictDataDO.getValue(), street, stock);
redisUtil.hset("stock:task:" + taskId, scanType, scanData.getCode());
try { try {
String wmsType = "wms" + capitalize(dictDataDO.getLabel()); String wmsType = "wms" + capitalize(scanType);
Field stockField = finalStock.getClass().getDeclaredField(dictDataDO.getLabel()); Field stockField = stock.getClass().getDeclaredField(scanType);
Field wmsField = KsecDataInfo.class.getDeclaredField(dictDataDO.getLabel()); Field stockWmsField = stock.getClass().getDeclaredField(wmsType);
Field stockWmsField = finalStock.getClass().getDeclaredField(wmsType);
wmsField.setAccessible(true);
stockField.setAccessible(true); stockField.setAccessible(true);
stockWmsField.setAccessible(true); stockWmsField.setAccessible(true);
String wmsCode = (String) wmsField.get(dataInfo); // String wmsCode = (String) wmsField.get(stock);
// stockField.set(stock, scanData.getCode());
stockField.set(stock, scanData.getCode());
if (!result.getCode().equals(wmsCode)) { redisUtil.hset("stock:task:" + taskId, scanType, scanData.getCode());
status.set("1"); } catch (IllegalAccessException e) {
log.error("scan error", e);
} catch (NoSuchFieldException e) {
log.error("scan error", e);
} }
stockField.set(finalStock, result.getCode());
stockWmsField.set(finalStock, wmsCode);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
status.set("1");
} }
stockService.updateById(stock);
return result; checkLog(stock);
} }
).orTimeout(10, TimeUnit.SECONDS) setUpdateStatus(taskId, cmd);
.exceptionally(ex -> {
if (ex instanceof TimeoutException) {
status.set("1");
} }
return null;
})
)
.toList();
// 等待所有异步任务完成 public void checkStop(String taskId) {
CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
try { Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("base_conf");
allOf.get(); // 阻塞直到所有任务完成
} catch (InterruptedException e) { Map<String, DictDataDO> csscStartList = dictDataService.getDictDataList("cssc_scan");
throw new RuntimeException(e); StockDO stock = stockService.getOne(
} catch (ExecutionException e) { new QueryWrapper<StockDO>()
throw new RuntimeException(e); .eq("task_id", taskId)
);
if (stock == null) {
log.error("taskId:{}不存在", taskId);
return;
} }
stock.setStatus("2");
for (String key : csscStartList.keySet()) {
if (key.startsWith("E")) {
String[] split = csscStartList.get(key).getValue().split(",");
for (String s : split) {
String wmsType = "wms" + capitalize(s);
try {
Field stockField = StockDO.class.getDeclaredField(s);
Field wmsField = StockDO.class.getDeclaredField(wmsType);
// 打印修改后的对象 // 添加以下两行代码,设置字段可访问
stockField.setAccessible(true);
wmsField.setAccessible(true);
if (!wmsField.get(stock).toString().equals(stockField.get(stock).toString())) {
stock.setStatus("1");
}
} catch (Exception e) {
finalStock.setStatus(status.get()); stock.setStatus("1");
log.error("scan error", e);
}
}
}
}
stockService.updateById(stock);
checkLog(stock);
setUpdateResult(taskId);
// ScanStatus scanStatus = scanServiceFactory.action(isCheck,code, dataInfo.getCode(), trayCode, dataInfo.getTrayCode()); redisUtil.del("stock:task:" + taskId);
stockService.saveOrUpdate(finalStock);
checkLog(finalStock);
// StockCheckRunnable stockCheckRunnable = new StockCheckRunnable(street,plcCmdInfo,cmdCode,stockMapper,path,checkLogMapper,configProperties.getScanCodeMode().getGoods(),wmsCode,wmsTrayCode,trayCode,trayCheck,configProperties,sensorGun);
// threadPoolExecutor.execute(stockCheckRunnable);
//还原相机
long end = System.currentTimeMillis();
long s = end - startTime;
log.info("time:{}millisecond", s);
// //ocr识别
// AlgorithmDelayTask algorithmDelayTask = new AlgorithmDelayTask(dataInfo.getFromDirection(),street.getPlcId()
// ,dataInfo.getTaskId(),10000,code,"E1",dataInfo.getFromRow(),dataInfo.getFromColumn());
// getPhotoDelayExecutor.communicationFactory(algorithmDelayTask);
} }
public static String capitalize(String str) { public static String capitalize(String str) {
@ -376,87 +488,28 @@ public class PLCServiceImpl implements PLCService {
CheckLogMapper checkLogMapper; CheckLogMapper checkLogMapper;
public void checkLog(StockDO stock) { public void checkLog(StockDO stock) {
CheckLogDO checkLog = new CheckLogDO(); CheckLogDO checkLog = BeanUtils.toBean(stock, CheckLogDO.class);
checkLog.setCheckNum(stock.getCheckNum()); CheckLogDO checkLogDO = checkLogMapper.selectOne(
new QueryWrapper<CheckLogDO>()
.eq("task_id", stock.getCheckNum()).last("limit 1")
);
if (checkLogDO != null) {
checkLog.setId(checkLogDO.getId());
}
checkLog.setPic(stock.getCheckPic()); checkLog.setPic(stock.getCheckPic());
checkLog.setStreetId(stock.getStreetId());
checkLog.setDirection(stock.getDirection());
checkLog.setSide(stock.getSide());
checkLog.setCode(stock.getCode());
checkLog.setWmsCode(stock.getWmsCode());
checkLog.setStatus(Integer.valueOf(stock.getStatus())); checkLog.setStatus(Integer.valueOf(stock.getStatus()));
checkLog.setRow(stock.getRow());
checkLog.setColumn(stock.getColumn());
checkLog.setTrayCode(stock.getTrayCode());
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
checkLog.setCount(stock.getCount());
checkLog.setWmsCount(stock.getWmsCount());
checkLog.setWmsCategory(stock.getWmsCategory());
checkLog.setCategory(stock.getCategory());
checkLog.setWmsTrayCode(stock.getWmsTrayCode());
checkLog.setLotnum(stock.getLotnum());
checkLog.setCreateTime(LocalDateTime.now()); checkLog.setCreateTime(LocalDateTime.now());
if (checkLogDO == null) {
checkLog.setId(null);
checkLogMapper.insert(checkLog); checkLogMapper.insert(checkLog);
log.info("checkLogMapper insert"); }else {
checkLogMapper.updateById(checkLog);
} }
log.info("checkLogMapper insert");
public void stockSave(KsecDataInfo ksecDataInfo, StreetDO streetDO, String trayCode) {
StockDO stockDO = stockService.getOne(new QueryWrapper<StockDO>()
.eq("street_id", streetDO.getId())
.eq("direction", ksecDataInfo.getFromDirection())
.eq("side", ksecDataInfo.getFromSide())
.eq("`row`", ksecDataInfo.getFromRow())
.eq("`column`", ksecDataInfo.getFromColumn()));
String cameraType = ksecDataInfo.getSRMNumber() + "-" + ksecDataInfo.getCmdName() + "-" + ksecDataInfo.getToDirection() + "-" + "up";
if (stockDO == null) {
stockDO = StockDO.builder()
.checkNum(ksecDataInfo.getTaskId())
.lotnum(ksecDataInfo.getLotnum())
.taskWmsId(ksecDataInfo.getTaskId())
.wmsCode(trayCode)
.code(trayCode)
.streetId(streetDO.getId())
.direction(ksecDataInfo.getFromDirection())
.row(ksecDataInfo.getFromRow())
.column(ksecDataInfo.getFromColumn())
.status("0")
.checkPic("http://" + streetDO.getPlcIp() + ":9007/pic/" + ksecDataInfo.getTaskId() + "_" + cameraType + ".JPEG;")
.exportTime(LocalDateTime.now()).build();
stockService.save(stockDO);
} else {
stockDO.setStatus("0");
stockDO.setLotnum(ksecDataInfo.getLotnum());
stockDO.setExportTime(LocalDateTime.now());
stockDO.setCheckPic(ksecDataInfo.getTaskId() + "_" + cameraType);
stockDO.setCheckNum(ksecDataInfo.getTaskId());
stockDO.setCode(trayCode);
stockDO.setWmsCode(trayCode);
stockDO.setTaskWmsId(ksecDataInfo.getTaskId());
stockService.updateById(stockDO);
} }
CheckLogDO checkLog = new CheckLogDO();
checkLog.setCheckNum(stockDO.getCheckNum());
checkLog.setPic(stockDO.getCheckPic());
checkLog.setStreetId(stockDO.getStreetId());
checkLog.setTaskId(stockDO.getTaskWmsId());
checkLog.setDirection(stockDO.getDirection());
checkLog.setSide(stockDO.getSide());
checkLog.setCode(trayCode);
checkLog.setWmsCode(trayCode);
checkLog.setStatus(Integer.valueOf(stockDO.getStatus()));
checkLog.setRow(stockDO.getRow());
checkLog.setColumn(stockDO.getColumn());
checkLog.setTrayCode(stockDO.getTrayCode());
checkLog.setWmsTrayCode(stockDO.getWmsTrayCode());
checkLog.setLotnum(stockDO.getLotnum());
checkLog.setCreateTime(LocalDateTime.now());
checkLogService.save(checkLog);
}
@Override @Override
public void stockSave(AlgorithmDelayTask algorithmDelayTask) { public void stockSave(AlgorithmDelayTask algorithmDelayTask) {
@ -484,7 +537,7 @@ public class PLCServiceImpl implements PLCService {
public void orderStart(KsecDataInfo kescEntity) { public void orderStart(KsecDataInfo kescEntity) {
StreetDO street = streetService.getStreetByPlcId(kescEntity.getSRMNumber()); StreetDO street = streetService.getStreetByPlcId(kescEntity.getSRMNumber());
sseClient.sendMessage(street.getPlcId()+"巷道开始随行记录");
if (street != null) { if (street != null) {
OrderDO order = new OrderDO(); OrderDO order = new OrderDO();
@ -492,10 +545,17 @@ public class PLCServiceImpl implements PLCService {
order.setCreateTime(LocalDateTime.now()); order.setCreateTime(LocalDateTime.now());
order.setSrmNumber(kescEntity.getSRMNumber()); order.setSrmNumber(kescEntity.getSRMNumber());
order.setFromSide(kescEntity.getFromSide()); order.setFromSide(kescEntity.getToSide());
order.setFromSeparation(kescEntity.getFromSeparation());
order.setFromDirection(kescEntity.getFromDirection()); order.setFromDirection(kescEntity.getFromDirection());
order.setFromColumn(kescEntity.getFromColumn()); order.setFromColumn(kescEntity.getFromColumn());
order.setFromRow(kescEntity.getFromRow()); order.setFromRow(kescEntity.getFromRow());
order.setToSide(kescEntity.getToSide());
order.setToSeparation(kescEntity.getToSeparation());
order.setToDirection(kescEntity.getToDirection());
order.setToColumn(kescEntity.getToColumn());
order.setToRow(kescEntity.getToRow());
order.setStartTime(LocalDateTime.now()); order.setStartTime(LocalDateTime.now());
//todo 昆船的项目 ,取货 放货是独立的 //todo 昆船的项目 ,取货 放货是独立的
@ -517,31 +577,30 @@ public class PLCServiceImpl implements PLCService {
// OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum()); // OrderRealtime.startOrder(street.getId(), plcCmdInfo.getOrderNum());
} }
} }
@Resource @Resource
ZLMediaKitService zLMediaKitService; ZLMediaKitService zLMediaKitService;
public void orderStop(KsecDataInfo ksecDataInfo) {
public void orderStop(String taskId) {
Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("camera_conf"); Map<String, DictDataDO> dictDataList = dictDataService.getDictDataList("camera_conf");
LocalDateTime endTime = LocalDateTime.now(); LocalDateTime endTime = LocalDateTime.now();
StreetDO street = streetService.getStreetByPlcId(ksecDataInfo.getSRMNumber());
if (street == null) {
return;
}
OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>() OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getTaskId, ksecDataInfo.getTaskId()) .eq(OrderDO::getTaskId, taskId)
.orderByDesc(OrderDO::getCreateTime) .orderByDesc(OrderDO::getCreateTime)
.last("limit 1")); .last("limit 1"));
if (order == null) { if (order == null) {
log.error("订单结束信号订单不存在orderNum:{}", ksecDataInfo.getTaskId()); log.error("订单结束信号订单不存在orderNum:{}", taskId);
return;
}
StreetDO street = streetService.getStreetByPlcId(order.getSrmNumber());
sseClient.sendMessage(street.getPlcId()+"巷道结束随行记录");
if (street == null) {
return; return;
} }
//OrderRealtime.stopOrder(street.getId()); //OrderRealtime.stopOrder(street.getId());
OrderDO update = new OrderDO(); // OrderDO update = new OrderDO();
update.setId(order.getId()); order.setEndTime(endTime);
update.setEndTime(endTime);
update.setToSide(ksecDataInfo.getToSide());
update.setToDirection(ksecDataInfo.getToDirection());
update.setToColumn(ksecDataInfo.getToColumn());
update.setToRow(ksecDataInfo.getToRow());
LocalDateTime endDownLoadTime = endTime.plusSeconds(10); LocalDateTime endDownLoadTime = endTime.plusSeconds(10);
Duration duration = Duration.between(order.getCreateTime(), endDownLoadTime); Duration duration = Duration.between(order.getCreateTime(), endDownLoadTime);
@ -550,8 +609,10 @@ public class PLCServiceImpl implements PLCService {
} }
if (street.getCamera1Id() != null) { if (street.getCamera1Id() != null) {
for (int i = 0; i < 5; i++) {
zLMediaKitService.stopRecord("live", street.getCamera1Id().toString()); zLMediaKitService.stopRecord("live", street.getCamera1Id().toString());
}
// String path = cameraVideo(street.getCamera1Id(), pathSrc, order.getCreateTime(), endDownLoadTime, dictDataList); // String path = cameraVideo(street.getCamera1Id(), pathSrc, order.getCreateTime(), endDownLoadTime, dictDataList);
} }
@ -560,7 +621,9 @@ public class PLCServiceImpl implements PLCService {
} }
orderMapper.updateById(update); orderMapper.updateById(order);
sseClient.sendMessage(street.getPlcId()+"巷道结束盘点");
} }
/** /**
@ -572,126 +635,14 @@ public class PLCServiceImpl implements PLCService {
*/ */
public void orderStop(KescEntity kescEntity) {
LocalDateTime endTime = LocalDateTime.now();
StreetDO street = streetService.getStreetByPlcId(kescEntity.getData().getSRMNumber());
if (street == null) {
return;
}
OrderDO order = orderMapper.selectOne(new QueryWrapper<OrderDO>().eq("task_id", kescEntity.getData().getTaskId()));
if (order == null) {
log.error("订单结束信号订单不存在orderNum:{}", kescEntity.getData().getTaskId());
return;
}
//OrderRealtime.stopOrder(street.getId());
order.setId(order.getId());
order.setEndTime(endTime);
order.setToSide(kescEntity.getData().getToSide());
order.setToDirection(kescEntity.getData().getToDirection());
order.setToColumn(kescEntity.getData().getToColumn());
order.setToRow(kescEntity.getData().getToRow());
//拍照相机id获取
String cameraType = kescEntity.getData().getSRMNumber() + "-" + kescEntity.getData().getToDirection() + "-" + "up";
List<SensorGunDO> sensorGunDOS = sensorGunMapper.selectListByStreetId(street.getId());
//扫码枪校验
String sensorGunCode = "";
for (SensorGunDO sensorGunDO : sensorGunDOS) {
if (sensorGunDO.getDirection() == kescEntity.getData().getFromDirection()) {
int time = Integer.parseInt(dictDataService.parseDictData("sensorFun_conf", "order_sensorFun_scan_time").getValue());
sensorGunCode = ScanningGun.readOCR(sensorGunDO.getIp(), sensorGunDO.getPort(), "start", time);
}
}
//拍照i
//CheckIntellBlinkChanel.pictures(street.getPlcId(), kescEntity.getData().getTaskId(),cameraType,dictDataService.parseDictData("camera_position", cameraType).getValue());
AlgorithmDelayTask algorithmDelayTask = new AlgorithmDelayTask(kescEntity.getData().getToDirection(), street.getPlcId()
, kescEntity.getData().getTaskId(), 10000, sensorGunCode, "C3", kescEntity.getData().getToRow(), kescEntity.getData().getToColumn());
String picPath = algorithmDelayTask.getSRMNumber() + "-" + algorithmDelayTask.getCmdName() + "-" + algorithmDelayTask.getDirection() + "-" + "up";
KsecDataInfo ksecDataInfo = KsecDataInfo.toFrom(kescEntity.getData());
stockSave(ksecDataInfo, street, sensorGunCode);
getPhotoDelayExecutor.communicationFactory(algorithmDelayTask);
order.setPics(order.getPics() == null ? "" : order.getPics() + "http://" + street.getPlcIp() + ":9007/pic/" + kescEntity.getData().getTaskId() + "_" + picPath + ".JPEG;");
orderMapper.updateById(order);
}
@Resource @Resource
GetPhotoDelayExecutor getPhotoDelayExecutor; GetPhotoDelayExecutor getPhotoDelayExecutor;
@Resource @Resource
SensorGunMapper sensorGunMapper; SensorGunMapper sensorGunMapper;
@Resource // 创建一个单线程的调度执行器
TaskDelayExecutor taskDelayExecutor; private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
public String cameraVideo(Integer cameraId, String path, LocalDateTime startTime, LocalDateTime endTime, Map<String, DictDataDO> map) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
String realPath = map.get("mp4_path").getValue() + path;
TaskDelayExecutor.addMp4DelayTask(cameraId, realPath, startTime, endTime, Long.valueOf(map.get("delay_mp4_time").getValue()));
}
});
thread.start();
//cameraControlModule.downloadMp4(cameraId,realPath,startTime,endTime);
return path;
}
/**
* //times == 1 ,做动作
* //times == 2 ,拍照
* //times == 3 ,做动作
* //times == 4 ,拍照
*
*/
// public void action(KsecDataInfo ksecDataInfo , Map<String, DictDataDO> dictDataList) throws InterruptedException {
// StreetDO street = streetService.getStreetByPlcId(ksecDataInfo.getSRMNumber());
// if (street == null) {
// log.error("street not found ,plcId :{}", ksecDataInfo.getSRMNumber());
// return;
// }
// //OrderInfo orderInfo = new OrderInfo(street, plcCmdInfo, times, code);
// String path = null;
// //判断是否拍照
// boolean needCapture = false;
// String picCmd = ksecDataInfo.getCode().substring(0, 2);
// if (picCmd.equals("C2") || picCmd.equals("C4") || picCmd.equals("C1") || picCmd.equals("C3")) {
// needCapture = true;
// }
// boolean time = (picCmd.equals("C3") || picCmd.equals("C4"));
// /***
// * 判断该巷道有几个相机
// * 如果有一个相机,就一个相机转
// * 如果有两个相机则左侧转camera1
// * 右侧转camera2
// * 没有就不管了
// */
// Integer leftRight =time ? ksecDataInfo.getToDirection() : ksecDataInfo.getFromDirection();
// Integer cameraId = getCameraByPlcCmd(street,leftRight);
// gyrateCameraByCode(cameraId,getPresetString(ksecDataInfo.getCode(),picCmd,ksecDataInfo));
// if(needCapture){
// if(time){
//
// path = PathUtil.createFileNameByRowColumn("jpg",cameraId,ksecDataInfo.getToRow(),ksecDataInfo.getToColumn());
// }else {
// path = PathUtil.createFileNameByRowColumn("jpg",cameraId,ksecDataInfo.getFromRow(),ksecDataInfo.getFromColumn());
// }
// path = cameraCapture(cameraId,true,path,dictDataList);
// }
// //update order info after capture
// if (path != null && needCapture) {
// captureUpdateOrderAndStock(ksecDataInfo, path,street.getId());
// }
// //转向原点位
//
// gyrateCameraByCode(cameraId,"C5");
// }
/** /**
* capture picture by camera * capture picture by camera
@ -701,22 +652,32 @@ public class PLCServiceImpl implements PLCService {
public String cameraCapture(CameraDO camera, Boolean delay, String path, Map<String, DictDataDO> map) { public String cameraCapture(CameraDO camera, Boolean delay, String path, Map<String, DictDataDO> map) {
//String path = PathUtil.createFileName("jpg",cameraId); //String path = PathUtil.createFileName("jpg",cameraId);
String realPath = map.get("media_path").getValue() + path; String realPath = map.get("media_path").getValue() + path;
if (delay) { if (delay) {
TaskDelayExecutor.addPicDelayTask(camera.getId(), realPath, Long.valueOf(map.get("delay_capture_time").getValue())); scheduler.schedule(() -> {
} else { try {
zLMediaKitService.pic(camera, realPath);
log.info("延迟截图执行完成cameraId:{}, path:{}", camera.getId(), realPath);
} catch (Exception e) {
log.error("延迟截图执行失败cameraId:{}", camera.getId(), e);
}
}, Long.valueOf(map.get("delay_capture_time").getValue()), TimeUnit.MILLISECONDS);
}else {
cameraModFactory.get(camera.getType()).pic(camera.getId(), 0, realPath); zLMediaKitService.pic(camera, realPath);
log.info("cameraID: {} capture photo :{}", camera.getId(), realPath); log.info("capture picture success,path:{}", realPath);
} }
return path; return path;
} }
String getPresetString(String code, String picCmd, KsecDataInfo ksecDataInfo) { String getPresetString(String code, String picCmd, KsecDataInfo ksecDataInfo) {
Integer side = 1; Integer side = 1;
Integer leftRight = 1; Integer leftRight = 1;
if (picCmd.equals("C2") || picCmd.equals("C1")) { if (picCmd.equals("C2") || picCmd.equals("C1")) {
side = ksecDataInfo.getFromSide(); side = ksecDataInfo.getFromSeparation();
leftRight = ksecDataInfo.getFromDirection(); leftRight = ksecDataInfo.getFromDirection();
} else { } else {
@ -726,47 +687,6 @@ public class PLCServiceImpl implements PLCService {
return code + (leftRight == 1 ? "-L-" : "-R-") + (side == 1 ? "" : "-OUT"); return code + (leftRight == 1 ? "-L-" : "-R-") + (side == 1 ? "" : "-OUT");
} }
/**
* capture ,and update the picture path in order and stock
*
* @param orderInfo
* @param path
*/
public void captureUpdateOrderAndStock(KsecDataInfo orderInfo, String path, Integer streetId) {
synchronized (orderInfo.getTaskId().intern()) {
OrderDO order = orderMapper.selectOne(new LambdaQueryWrapper<OrderDO>().eq(OrderDO::getTaskId, orderInfo.getTaskId()));
if (order != null) {
//记录送货完成
if (orderInfo.getCode().startsWith("C4")) {
StockLogDO stockLog = new StockLogDO();
stockLog.setStreetId(streetId);
stockLog.setDirection(orderInfo.getToDirection());
stockLog.setSide(orderInfo.getToSeparation());
stockLog.setRow(orderInfo.getToRow());
stockLog.setColumn(orderInfo.getToColumn());
stockLog.setPic(path);
String type = orderInfo.getCode().substring(1, 2);
stockLog.setType(Integer.valueOf(type));
stockLog.setOrderNum(orderInfo.getTaskId());
stockLog.setCreateTime(LocalDateTime.now());
stockLogMapper.insert(stockLog);
}
String pics = order.getPics();
if (org.springframework.util.StringUtils.isEmpty(pics)) {
order.setPics(path);
} else {
order.setPics(pics + "," + path);
}
OrderDO update = new OrderDO();
update.setId(order.getId());
update.setPics(order.getPics());
log.debug(" update order set pics:{},orderNum:{}", update.getPics(), orderInfo.getTaskId());
orderMapper.updateById(update);
}
}
}
public CameraDO getCameraByLeftRight(StreetDO street, Integer leftRight) { public CameraDO getCameraByLeftRight(StreetDO street, Integer leftRight) {
Integer cameraId = null; Integer cameraId = null;

@ -4,7 +4,6 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.resources.URLResourcesDo;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.service.resources.URLResourcesService; import cn.iocoder.yudao.module.camera.service.resources.URLResourcesService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -24,16 +23,16 @@ public class OpencvServiceImpl implements ScanService {
URLResourcesService urlResourcesService; URLResourcesService urlResourcesService;
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
// //
ScanData scanData = new ScanData(); ScanData scanData = new ScanData();
scanData.setCode(dataInfo.getCategory()); scanData.setCode(stockDO.getCategory());
scanData.setIp(streetDO.getPlcIp()); scanData.setIp(streetDO.getPlcIp());
scanData.setPort(streetDO.getPlcPort()); scanData.setPort(streetDO.getPlcPort());
scanData.setUuid(stockDO.getCheckPic()); scanData.setUuid(stockDO.getCheckPic());
scanData.setDirection(dataInfo.getFromDirection()); scanData.setDirection(stockDO.getDirection());
HttpEntity<ScanData> request = new HttpEntity<>(scanData, headers); HttpEntity<ScanData> request = new HttpEntity<>(scanData, headers);
String url = "http://" + streetDO.getPlcIp() + ":" + streetDO.getPlcPort() + "/match/match2D"; String url = "http://" + streetDO.getPlcIp() + ":" + streetDO.getPlcPort() + "/match/match2D";
scanData = restTemplate.postForObject(url, request, ScanData.class); scanData = restTemplate.postForObject(url, request, ScanData.class);

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.camera.service.scan;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
@ -19,16 +18,16 @@ public class PCDServiceImpl implements ScanService{
@Resource @Resource
RestTemplate restTemplate; RestTemplate restTemplate;
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
// //
ScanData scanData = new ScanData(); ScanData scanData = new ScanData();
scanData.setCode(dataInfo.getCategory()); scanData.setCode(stockDO.getCategory());
scanData.setIp(streetDO.getPlcIp()); scanData.setIp(streetDO.getPlcIp());
scanData.setPort(streetDO.getPlcPort()); scanData.setPort(streetDO.getPlcPort());
scanData.setUuid(stockDO.getCheckPic()); scanData.setUuid(stockDO.getCheckPic());
scanData.setDirection(dataInfo.getFromDirection()); scanData.setDirection(stockDO.getDirection());
HttpEntity<ScanData> request = new HttpEntity<>(scanData, headers); HttpEntity<ScanData> request = new HttpEntity<>(scanData, headers);
String url = "http://"+streetDO.getPlcIp()+":"+streetDO.getPlcPort()+"/match/match3D"; String url = "http://"+streetDO.getPlcIp()+":"+streetDO.getPlcPort()+"/match/match3D";

@ -3,13 +3,12 @@ package cn.iocoder.yudao.module.camera.service.scan;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service("rfidScanService") @Service("rfidScanService")
public class RFIDScanServiceImpl implements ScanService{ public class RFIDScanServiceImpl implements ScanService{
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
return null; return null;
} }
} }

@ -4,7 +4,6 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.service.sensorgun.CognexSocket; import cn.iocoder.yudao.module.camera.service.sensorgun.CognexSocket;
import cn.iocoder.yudao.module.camera.service.sensorgun.SensorGunService; import cn.iocoder.yudao.module.camera.service.sensorgun.SensorGunService;
import cn.iocoder.yudao.module.camera.service.sensorgun.SickSocket; import cn.iocoder.yudao.module.camera.service.sensorgun.SickSocket;
@ -82,12 +81,12 @@ public class ScanGunScanServiceImpl implements ScanService{
return bd.readLine(); return bd.readLine();
} }
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
ScanData scanData = new ScanData(); ScanData scanData = new ScanData();
SensorGunDO sensorGun = sensorService.getOne(new QueryWrapper<SensorGunDO>().eq("street_id", streetDO.getId()).eq("direction", dataInfo.getFromDirection())); SensorGunDO sensorGun = sensorService.getOne(new QueryWrapper<SensorGunDO>().eq("street_id", streetDO.getId()).eq("direction", stockDO.getDirection()));
String trayCode = ""; String trayCode = "";
if (sensorGun == null) { if (sensorGun == null) {
log.error("no sensor gun config in database ,street id:{},direction:{}", streetDO.getId(), dataInfo.getFromDirection()); log.error("no sensor gun config in database ,street id:{},direction:{}", streetDO.getId(), stockDO.getDirection());
} else { } else {
// sick扫码 // sick扫码
if (sensorGun.getType() == 1){ if (sensorGun.getType() == 1){

@ -3,8 +3,7 @@ package cn.iocoder.yudao.module.camera.service.scan;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
public interface ScanService { public interface ScanService {
ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO); ScanData scan(StreetDO streetDO, StockDO stockDO);
} }

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.camera.service.scan;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import cn.iocoder.yudao.module.camera.service.Hik3D.HikFlaskApiService; import cn.iocoder.yudao.module.camera.service.Hik3D.HikFlaskApiService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -26,39 +25,49 @@ public class ScanServiceFactory {
private HikFlaskApiService hikFlaskApiService; private HikFlaskApiService hikFlaskApiService;
// 返回的ScanData的code会将作为扫描结果如果和wms的一致则记录为成功 // 返回的ScanData的code会将作为扫描结果如果和wms的一致则记录为成功
// 图片保存将在scan方法中实现 // 图片保存将在scan方法中实现
public ScanData scan(String type, StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(String type, StreetDO streetDO, StockDO stockDO) {
try {
switch (type) { switch (type) {
case "0": case "0":
return null; return null;
// 扫码枪扫码 // 扫码枪扫码
case "1": case "1":
return scanGunScanService.scan(streetDO, dataInfo, stockDO); log.info("扫码枪扫码");
return scanGunScanService.scan(streetDO, stockDO);
// RFID扫码 // RFID扫码
case "2": case "2":
return rfidScanService.scan(streetDO, dataInfo, stockDO); log.info("RFID扫码");
return rfidScanService.scan(streetDO, stockDO);
// 视觉扫码 // 视觉扫码
case "3": case "3":
return yoloService.scan(streetDO, dataInfo, stockDO); log.info("视觉扫码");
return yoloService.scan(streetDO, stockDO);
// 3D扫码 // 3D扫码
case "4": case "4":
return pcdService.scan(streetDO, dataInfo, stockDO); log.info("3D扫码");
return pcdService.scan(streetDO, stockDO);
// opencv扫码 // opencv扫码
case "5": case "5":
return opencvService.scan(streetDO, dataInfo, stockDO); log.info("opencv扫码");
return opencvService.scan(streetDO, stockDO);
// hik3d识别扫码 // hik3d识别扫码
case "6": case "6":
return hikFlaskApiService.scan(streetDO, dataInfo, stockDO); log.info("hik3d识别扫码");
return hikFlaskApiService.scan(streetDO, stockDO);
// 默认情况处理 // 默认情况处理
default: default:
return null; return new ScanData();
}
} catch (Exception e) {
log.error("scan error", e);
return new ScanData();
} }
} }

@ -3,13 +3,12 @@ package cn.iocoder.yudao.module.camera.service.scan;
import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO; import cn.iocoder.yudao.module.camera.dal.dataobject.stock.StockDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.entity.ScanData; import cn.iocoder.yudao.module.camera.dal.entity.ScanData;
import cn.iocoder.yudao.module.camera.framework.netty.ksec.KsecDataInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service("yoloService") @Service("yoloService")
public class YoloServiceImpl implements ScanService{ public class YoloServiceImpl implements ScanService{
@Override @Override
public ScanData scan(StreetDO streetDO, KsecDataInfo dataInfo, StockDO stockDO) { public ScanData scan(StreetDO streetDO, StockDO stockDO) {
return null; return null;
} }
} }

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.camera.service.shelfCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodePageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodeSaveReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import jakarta.validation.Valid;
/**
* RFID Service
*
* @author
*/
public interface ShelfCodeService {
/**
* RFID
*
* @param createReqVO
* @return
*/
Integer createShelfCode(@Valid ShelfCodeSaveReqVO createReqVO);
/**
* RFID
*
* @param updateReqVO
*/
void updateShelfCode(@Valid ShelfCodeSaveReqVO updateReqVO);
/**
* RFID
*
* @param id
*/
void deleteShelfCode(Integer id);
/**
* RFID
*
* @param id
* @return RFID
*/
ShelfCodeDO getShelfCode(Integer id);
/**
* RFID
*
* @param pageReqVO
* @return RFID
*/
PageResult<ShelfCodeDO> getShelfCodePage(ShelfCodePageReqVO pageReqVO);
}

@ -0,0 +1,71 @@
package cn.iocoder.yudao.module.camera.service.shelfCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodePageReqVO;
import cn.iocoder.yudao.module.camera.controller.admin.shelfCode.vo.ShelfCodeSaveReqVO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import cn.iocoder.yudao.module.camera.dal.mysql.shelfCode.ShelfCodeMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.RFID_NOT_EXISTS;
/**
* RFID Service
*
* @author
*/
@Service
@Validated
public class ShelfCodeServiceImpl implements ShelfCodeService {
@Resource
private ShelfCodeMapper shelfCodeMapper;
@Override
public Integer createShelfCode(ShelfCodeSaveReqVO createReqVO) {
// 插入
ShelfCodeDO shelfCode = BeanUtils.toBean(createReqVO, ShelfCodeDO.class);
shelfCodeMapper.insert(shelfCode);
// 返回
return shelfCode.getId();
}
@Override
public void updateShelfCode(ShelfCodeSaveReqVO updateReqVO) {
// 校验存在
validateShelfCodeExists(updateReqVO.getId());
// 更新
ShelfCodeDO updateObj = BeanUtils.toBean(updateReqVO, ShelfCodeDO.class);
shelfCodeMapper.updateById(updateObj);
}
@Override
public void deleteShelfCode(Integer id) {
// 校验存在
validateShelfCodeExists(id);
// 删除
shelfCodeMapper.deleteById(id);
}
private void validateShelfCodeExists(Integer id) {
if (shelfCodeMapper.selectById(id) == null) {
throw exception(RFID_NOT_EXISTS);
}
}
@Override
public ShelfCodeDO getShelfCode(Integer id) {
return shelfCodeMapper.selectById(id);
}
@Override
public PageResult<ShelfCodeDO> getShelfCodePage(ShelfCodePageReqVO pageReqVO) {
return shelfCodeMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,11 @@
package cn.iocoder.yudao.module.camera.service.shelfCode;
import lombok.extern.slf4j.Slf4j;
/**
* sick
*/
@Slf4j
public class ShelfCodeSocket {
}

@ -1,13 +1,15 @@
package cn.iocoder.yudao.module.camera.service.streamingMedia; package cn.iocoder.yudao.module.camera.service.streamingMedia;
import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO; import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO;
import cn.iocoder.yudao.module.camera.dal.zlm.RtspSessionResponse;
import java.util.List; import java.util.List;
public interface ZLMediaKitService { public interface ZLMediaKitService {
String startRecord(String app, String stream); String startRecord(String app, String stream);
void stopRecord(String app, String stream); RtspSessionResponse stopRecord(String app, String stream);
void addRtspProxy(CameraDO camera, String zlmApiUrl, String zlmApiSecret); void addRtspProxy(CameraDO camera, String zlmApiUrl, String zlmApiSecret);
void pic(CameraDO camera, String zlmApiUrl);
void zlmConf( List<CameraDO> list); void zlmConf( List<CameraDO> list);
void deleteRecordDirectory(String app, String stream, String period); void deleteRecordDirectory(String app, String stream, String period);
} }

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO; import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO;
import cn.iocoder.yudao.module.camera.dal.zlm.RtspSessionResponse; import cn.iocoder.yudao.module.camera.dal.zlm.RtspSessionResponse;
import cn.iocoder.yudao.module.camera.service.channel.CameraChannel; import cn.iocoder.yudao.module.camera.service.channel.CameraChannel;
import cn.iocoder.yudao.module.camera.util.PathUtil;
import cn.iocoder.yudao.module.system.service.dict.DictDataService; import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -40,6 +41,7 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
@Resource @Resource
private DictDataService dictDataService; private DictDataService dictDataService;
@Override @Override
public String public String
startRecord(String app, String cameraId) { startRecord(String app, String cameraId) {
@ -52,7 +54,14 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
addParams.put("app", "live"); addParams.put("app", "live");
addParams.put("stream","camera"+ cameraId); addParams.put("stream","camera"+ cameraId);
// addParams.put("url", CameraChannel.getRtspUrl(camera.getIp(), camera.getRtspPort(), camera.getChannel(), camera.getUser(), camera.getPassword(),camera.getType())); // addParams.put("url", CameraChannel.getRtspUrl(camera.getIp(), camera.getRtspPort(), camera.getChannel(), camera.getUser(), camera.getPassword(),camera.getType()));
sendHttp(addParams, "startRecord"); // sendHttp(addParams, "startRecord");
// 查看是否录像,为录像则重新出发录像
for (int i = 0; i <=5; i++) {
RtspSessionResponse rtspSessionResponse = sendHttp(addParams, "startRecord");
if (rtspSessionResponse != null && rtspSessionResponse.isResult()){
break;
}
}
log.info("startRecord camera:"+cameraId); log.info("startRecord camera:"+cameraId);
String path = checkHiddenFilesInDirectory(app,cameraId); String path = checkHiddenFilesInDirectory(app,cameraId);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
@ -104,6 +113,62 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
return ""; return "";
} }
/**
* ZLMediaKitgetSnap
*
* @param savePath
* @return 访null
*/
public void captureSnapshot(CameraDO camera, String savePath) {
PathUtil.checkDirc(savePath);
String zlmApiUrl = dictDataService.parseDictData("ZLMediaKit_conf", "Apiurl").getValue();
String zlmApiSecret = dictDataService.parseDictData("ZLMediaKit_conf", "secret").getValue();
try {
// 构建getSnap请求参数
Map<String, Object> snapParams = new HashMap<>();
snapParams.put("secret", zlmApiSecret);
snapParams.put("vhost", "__defaultVhost__");
snapParams.put("expire_sec",1);
snapParams.put("url",CameraChannel.getRtspUrl(camera.getIp(), camera.getRtspPort(), camera.getChannel(), camera.getUser(), camera.getPassword(),camera.getType()));
snapParams.put("timeout_sec", 10); // 设置超时时间
// 构建请求URL
String snapUrl = buildUrl(zlmApiUrl + "getSnap", null, snapParams);
// 发送请求并获取截图
Request request = new Request.Builder()
.url(snapUrl)
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful() && response.body() != null) {
// 保存图片到指定位置
byte[] imageBytes = response.body().bytes();
Path savePathObj = Paths.get(savePath);
// 确保目录存在
Files.createDirectories(savePathObj.getParent());
// 写入文件
Files.write(savePathObj, imageBytes);
log.info("截图保存成功: {}", savePath);
// 返回访问路径(根据你的需求调整)
String mp4SaveApi = dictDataService.parseDictData("ZLMediaKit_conf", "mp4SaveApi").getValue();
} else {
log.error("获取截图失败HTTP状态码: {}", response.code());
}
}
} catch (Exception e) {
log.error("截图过程中发生错误", e);
}
}
public static String removeLeadingDot(String input) { public static String removeLeadingDot(String input) {
if (input == null || input.isEmpty()) { if (input == null || input.isEmpty()) {
return input; return input;
@ -114,7 +179,7 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
return input; return input;
} }
@Override @Override
public void stopRecord(String app, String stream) { public RtspSessionResponse stopRecord(String app, String stream) {
String zlmApiSecret = dictDataService.parseDictData("ZLMediaKit_conf", "secret").getValue(); String zlmApiSecret = dictDataService.parseDictData("ZLMediaKit_conf", "secret").getValue();
Map<String, Object> addParams = new HashMap<>(); Map<String, Object> addParams = new HashMap<>();
@ -124,8 +189,8 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
addParams.put("app", "live"); addParams.put("app", "live");
addParams.put("stream","camera"+ stream); addParams.put("stream","camera"+ stream);
// addParams.put("url", CameraChannel.getRtspUrl(camera.getIp(), camera.getRtspPort(), camera.getChannel(), camera.getUser(), camera.getPassword(),camera.getType())); // addParams.put("url", CameraChannel.getRtspUrl(camera.getIp(), camera.getRtspPort(), camera.getChannel(), camera.getUser(), camera.getPassword(),camera.getType()));
sendHttp(addParams, "stopRecord"); RtspSessionResponse rtspSessionResponse = sendHttp(addParams, "stopRecord");
return rtspSessionResponse;
} }
@Override @Override
@ -184,11 +249,17 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
} }
System.out.println("Add RTSP Proxy Response: " + response); System.out.println("Add RTSP Proxy Response: " + response);
} }
@Override
public void pic(CameraDO camera, String zlmApiUrl) {
captureSnapshot(camera, zlmApiUrl);
}
@Override @Override
public void deleteRecordDirectory(String app, String stream, String period) { public void deleteRecordDirectory(String app, String stream, String period) {
} }
public void sendHttp(Map<String, Object> queryParams ,String url){ public RtspSessionResponse sendHttp(Map<String, Object> queryParams ,String url){
String zlmApiUrl = dictDataService.parseDictData("ZLMediaKit_conf", "Apiurl").getValue(); String zlmApiUrl = dictDataService.parseDictData("ZLMediaKit_conf", "Apiurl").getValue();
try { try {
@ -196,8 +267,10 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService{
String queryUrl = buildUrl(zlmApiUrl +url,null , queryParams); String queryUrl = buildUrl(zlmApiUrl +url,null , queryParams);
String response = get(queryUrl); String response = get(queryUrl);
RtspSessionResponse rtspSessionResponse = JsonUtils.parseObject(response, RtspSessionResponse.class); RtspSessionResponse rtspSessionResponse = JsonUtils.parseObject(response, RtspSessionResponse.class);
return rtspSessionResponse;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null;
} }
} }

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.camera.controller.admin.street.vo.StreetSaveReqVO
import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -85,6 +86,8 @@ public interface StreetService extends IService<StreetDO> {
List<RfidDO> getRFIDListByStreetId(Integer streetId); List<RfidDO> getRFIDListByStreetId(Integer streetId);
List<ShelfCodeDO> getShelfCodeListByStreetId(Integer streetId);
void getCameraName(StreetRespVO streetRespVO); void getCameraName(StreetRespVO streetRespVO);
void getCameraName(List<StreetRespVO> streetRespVO); void getCameraName(List<StreetRespVO> streetRespVO);
} }

@ -9,10 +9,12 @@ import cn.iocoder.yudao.module.camera.dal.dataobject.camera.CameraDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO; import cn.iocoder.yudao.module.camera.dal.dataobject.lightsource.LightSourceDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO; import cn.iocoder.yudao.module.camera.dal.dataobject.rfid.RfidDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO; import cn.iocoder.yudao.module.camera.dal.dataobject.sensorgun.SensorGunDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.shelfCode.rfid.ShelfCodeDO;
import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO; import cn.iocoder.yudao.module.camera.dal.dataobject.street.StreetDO;
import cn.iocoder.yudao.module.camera.dal.mysql.lightsource.LightSourceMapper; import cn.iocoder.yudao.module.camera.dal.mysql.lightsource.LightSourceMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.rfid.RfidMapper; import cn.iocoder.yudao.module.camera.dal.mysql.rfid.RfidMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.sensorgun.SensorGunMapper; import cn.iocoder.yudao.module.camera.dal.mysql.sensorgun.SensorGunMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.shelfCode.ShelfCodeMapper;
import cn.iocoder.yudao.module.camera.dal.mysql.street.StreetMapper; import cn.iocoder.yudao.module.camera.dal.mysql.street.StreetMapper;
import cn.iocoder.yudao.module.camera.service.camera.CameraService; import cn.iocoder.yudao.module.camera.service.camera.CameraService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -47,6 +49,9 @@ public class StreetServiceImpl extends ServiceImpl<StreetMapper, StreetDO> imple
@Resource @Resource
private RfidMapper rfidMapper; private RfidMapper rfidMapper;
@Resource
private ShelfCodeMapper shelfCodeMapper;
@Override @Override
public StreetDO getStreetByPlcId(String code) { public StreetDO getStreetByPlcId(String code) {
@ -176,6 +181,12 @@ public class StreetServiceImpl extends ServiceImpl<StreetMapper, StreetDO> imple
return rfidMapper.selectListByStreetId(streetId); return rfidMapper.selectListByStreetId(streetId);
} }
@Override
public List<ShelfCodeDO> getShelfCodeListByStreetId(Integer streetId) {
return null;
}
private void createLightSourceList(Integer streetId, List<LightSourceDO> list) { private void createLightSourceList(Integer streetId, List<LightSourceDO> list) {
list.forEach(o -> o.setStreetId(streetId)); list.forEach(o -> o.setStreetId(streetId));
lightSourceMapper.insertBatch(list); lightSourceMapper.insertBatch(list);

@ -20,14 +20,6 @@ public class SpecificationsAndOCR {
private static final Logger tcpLogger = LoggerFactory.getLogger("sick"); private static final Logger tcpLogger = LoggerFactory.getLogger("sick");
public static void main(String[] args) {
System.out.println(UUID.randomUUID());
Map<String,String> map = new HashMap<>();
map.put("Lotnum","");
map.put("2","");
Map<String,String> code = readOCR("127.0.0.1", 554);
System.out.println(map);
}
/* /*
* OCR * OCR

@ -52,9 +52,12 @@ public class DictDataServiceImpl extends ServiceImpl<DictDataMapper,DictDataDO>
@PostConstruct @PostConstruct
void init(){ void init(){
// log.info("init DictDataServiceImpl"); // log.info("init DictDataServiceImpl");
// 删除
List<DictDataDO> list = dictDataMapper.selectList(); List<DictDataDO> list = dictDataMapper.selectList();
Map<String,List<DictDataDO>> map = list.stream().collect(Collectors.groupingBy(DictDataDO::getDictType)); Map<String,List<DictDataDO>> map = list.stream().collect(Collectors.groupingBy(DictDataDO::getDictType));
map.forEach((k,v)->{ map.forEach((k,v)->{
redisUtil.del("dict:"+k);
redisUtil.hsetList("dict:"+k, v.stream().collect(Collectors.toMap(DictDataDO::getLabel,DictDataDO::getValue))); redisUtil.hsetList("dict:"+k, v.stream().collect(Collectors.toMap(DictDataDO::getLabel,DictDataDO::getValue)));
}); });
} }

Loading…
Cancel
Save