REM:
1. 增加添加设备接口及功能
2. 增加删除设备接口及功能
This commit is contained in:
HuangXin 2020-08-04 19:45:08 +08:00
parent d36aa022d1
commit 86ab4fb8d7
20 changed files with 387 additions and 85 deletions

View File

@ -122,4 +122,24 @@ public final class CommonEnumHandler<E extends BaseEnum> extends BaseTypeHandler
} }
throw new IllegalArgumentException(enumType.getName() + " unknown enumerated type index:" + index); throw new IllegalArgumentException(enumType.getName() + " unknown enumerated type index:" + index);
} }
/**
* Code of e.
*
* @param <E> the type parameter
* @param enumClass the enum class
* @param code the code
* @return the e
*/
public static <E extends Enum<?> & BaseEnum> E codeOf(Class<E> enumClass, int code) {
E[] enumCodes = enumClass.getEnumConstants();
for(E e : enumCodes) {
if(e.getValue() == code) {
return e;
}
}
return null;
}
} }

View File

@ -1,10 +1,19 @@
package com.dispose.controller; package com.dispose.controller;
import com.dispose.common.CommonEnumHandler;
import com.dispose.common.DisposeCapacityType;
import com.dispose.common.DisposeObjectType;
import com.dispose.common.ErrorCode; import com.dispose.common.ErrorCode;
import com.dispose.pojo.dto.protocol.base.BaseRespStatus; import com.dispose.common.IpAddrType;
import com.dispose.pojo.dto.protocol.base.IdArraysReq;
import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO; import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO;
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
import com.dispose.pojo.dto.protocol.base.ValidGroups;
import com.dispose.pojo.dto.protocol.device.manager.AddDeviceReq; import com.dispose.pojo.dto.protocol.device.manager.AddDeviceReq;
import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRet;
import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRsp;
import com.dispose.pojo.dto.protocol.device.manager.DelDeviceRsp;
import com.dispose.pojo.entity.DisposeCapacity;
import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.entity.DisposeDevice;
import com.dispose.pojo.po.MulReturnType; import com.dispose.pojo.po.MulReturnType;
import com.dispose.service.DisposeDeviceManagerService; import com.dispose.service.DisposeDeviceManagerService;
@ -14,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -36,6 +46,9 @@ import java.util.List;
@Validated @Validated
public class DisposeDeviceManagerController { public class DisposeDeviceManagerController {
/**
* The Dispose device manager service.
*/
@Resource @Resource
private DisposeDeviceManagerService disposeDeviceManagerService; private DisposeDeviceManagerService disposeDeviceManagerService;
@ -48,12 +61,13 @@ public class DisposeDeviceManagerController {
@PutMapping("/device") @PutMapping("/device")
@ResponseBody @ResponseBody
@ApiOperation("添加处置能力节点") @ApiOperation("添加处置能力节点")
public ProtocolRespDTO<? extends BaseRespStatus> addDisposeDevice( public ProtocolRespDTO<? extends AddDeviceRsp> addDisposeDevice(
@Validated @Validated(ValidGroups.AddDeviceValid.class)
@RequestBody ProtocolReqDTO<AddDeviceReq> mr) { @RequestBody ProtocolReqDTO<AddDeviceReq> mr) {
List<DisposeDevice> devs = new ArrayList<>(); List<DisposeDevice> devs = new ArrayList<>();
// 获取请求中的需要添加的设备列表
mr.getMsgContent().getItems().forEach(v -> { mr.getMsgContent().getItems().forEach(v -> {
DisposeDevice dev = DisposeDevice.builder() DisposeDevice dev = DisposeDevice.builder()
.ipAddr(v.getIpAddr()) .ipAddr(v.getIpAddr())
@ -70,13 +84,87 @@ public class DisposeDeviceManagerController {
.urlType(v.getUrlType()) .urlType(v.getUrlType())
.readme(v.getReadme()) .readme(v.getReadme())
.build(); .build();
// 初始化设备能力信息
dev.setDevCapacity(new ArrayList<>());
v.getCapacity().forEach(k -> {
// 添加设备能力
DisposeCapacity cap = DisposeCapacity.builder()
.capacityType(CommonEnumHandler.codeOf(DisposeCapacityType.class, k.getCapacityType()))
.ipType(CommonEnumHandler.codeOf(IpAddrType.class, k.getIpType()))
.objectType(CommonEnumHandler.codeOf(DisposeObjectType.class, k.getObjectType()))
.protectIp(k.getProtectIp())
.build();
dev.getDevCapacity().add(cap);
});
devs.add(dev); devs.add(dev);
}); });
// 添加设备
List<MulReturnType<ErrorCode, DisposeDevice>> ret = disposeDeviceManagerService.addDisposeDevice(devs); List<MulReturnType<ErrorCode, DisposeDevice>> ret = disposeDeviceManagerService.addDisposeDevice(devs);
// 协议响应消息
AddDeviceRsp rspInfo = new AddDeviceRsp();
ret.forEach(v -> {
DisposeDevice dev = v.getSecondParam();
AddDeviceRet rsp = AddDeviceRet.builder()
.ipAddr(dev.getIpAddr())
.ipPort(dev.getIpPort())
.build();
return ProtocolRespDTO.result(ErrorCode.ERR_OK); rsp.setStatus(v.getFirstParam().getCode());
rsp.setMessage(new String[] {v.getFirstParam().getMsg()});
// 添加设备成功记录新增设备ID
if(rsp.getStatus() == ErrorCode.ERR_OK.getCode()) {
rsp.setDevId(String.valueOf(dev.getId()));
}
rspInfo.getItems().add(rsp);
});
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
}
/**
* Remove dispose device protocol resp dto.
*
* @param mr the mr
* @return the protocol resp dto
*/
@DeleteMapping("/device")
@ResponseBody
@ApiOperation("删除处置能力节点")
public ProtocolRespDTO<List<DelDeviceRsp>> removeDisposeDevice(
@Validated(ValidGroups.ExplicitIdArrayValid.class)
@RequestBody ProtocolReqDTO<IdArraysReq> mr) {
List<Long> idList = new ArrayList<>();
for (String s : mr.getMsgContent().getId()) {
idList.add(Long.parseLong(s));
}
List<MulReturnType<ErrorCode, DisposeDevice>> ret =
disposeDeviceManagerService.removeDisposeDevice(idList);
List<DelDeviceRsp> rspInfo = new ArrayList<>();
ret.forEach(v -> {
DelDeviceRsp rsp = new DelDeviceRsp();
DisposeDevice dev = v.getSecondParam();
rsp.setId(String.valueOf(dev.getId()));
rsp.setDevStatus(dev.getStatus());
rsp.setStatus(v.getFirstParam().getCode());
rsp.setMessage(new String[] {v.getFirstParam().getMsg()});
rspInfo.add(rsp);
});
return ProtocolRespDTO.result(ErrorCode.ERR_OK, rspInfo);
} }
} }

View File

@ -32,7 +32,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class) @ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody @ResponseBody
public ProtocolRespDTO<BaseRespStatus> handleException(MethodArgumentNotValidException ex) { public ProtocolRespDTO<BaseRespStatus> handleException(MethodArgumentNotValidException ex) {
log.error("Argument Exception: {}", ex.getMessage()); log.error("Argument Exception: ", ex);
List<String> exMsg = new ArrayList<>(); List<String> exMsg = new ArrayList<>();
AtomicInteger idx = new AtomicInteger(); AtomicInteger idx = new AtomicInteger();
@ -45,4 +45,13 @@ public class GlobalExceptionHandler {
HttpStatus.error400().status(), HttpStatus.error400().status(),
exMsg.toArray(new String[0])); exMsg.toArray(new String[0]));
} }
@ExceptionHandler(Throwable.class)
@ResponseBody
public ProtocolRespDTO<BaseRespStatus> handleException(Throwable ex) {
log.error("Throwable Exception: ", ex);
return ProtocolRespDTO.result(ErrorCode.ERR_PARAMEXCEPTION,
HttpStatus.error400().status(), new String[] {ErrorCode.ERR_PARAMEXCEPTION.getMsg()});
}
} }

View File

@ -18,8 +18,12 @@ public interface DisposeDeviceManager {
* *
* @param dev the dev * @param dev the dev
* @return the mul return type * @return the mul return type
* @throws IllegalAccessException the illegal access exception
* @throws NoSuchMethodException the no such method exception
* @throws InvocationTargetException the invocation target exception
*/ */
MulReturnType<ErrorCode, Long> addDisposeDevice(DisposeDevice dev); MulReturnType<ErrorCode, Long> addDisposeDevice(DisposeDevice dev) throws IllegalAccessException,
NoSuchMethodException, InvocationTargetException;
/** /**
* Upgrade dispose device error code. * Upgrade dispose device error code.

View File

@ -44,13 +44,22 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager {
* *
* @param dev the dev * @param dev the dev
* @return the mul return type * @return the mul return type
* @throws IllegalAccessException the illegal access exception
* @throws NoSuchMethodException the no such method exception
* @throws InvocationTargetException the invocation target exception
*/ */
@Override @Override
public MulReturnType<ErrorCode, Long> addDisposeDevice(DisposeDevice dev) { public MulReturnType<ErrorCode, Long> addDisposeDevice(DisposeDevice dev) throws IllegalAccessException,
NoSuchMethodException, InvocationTargetException {
// 看看系统中有没有存在相同IP+端口地址的设备有的话返回失败 // 看看系统中有没有存在相同IP+端口地址的设备有的话返回失败
DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort()); DisposeDevice tDev = disposeDeviceMapper.getDeviceByAddress(dev.getIpAddr(), dev.getIpPort());
if (tDev != null) { if (tDev != null) {
if(dev.getStatus() == ObjectStatus.DELETED) {
return new MulReturnType<>(upgradeDisposeDevice(dev), tDev.getId());
}
return new MulReturnType<>(ErrorCode.ERR_DEVICEEXISTS, tDev.getId()); return new MulReturnType<>(ErrorCode.ERR_DEVICEEXISTS, tDev.getId());
} }
@ -72,6 +81,9 @@ public class DisposeDeviceManagerImpl implements DisposeDeviceManager {
* *
* @param dev the dev * @param dev the dev
* @return the error code * @return the error code
* @throws IllegalAccessException the illegal access exception
* @throws NoSuchMethodException the no such method exception
* @throws InvocationTargetException the invocation target exception
*/ */
@Override @Override
public ErrorCode upgradeDisposeDevice(DisposeDevice dev) throws IllegalAccessException, NoSuchMethodException, public ErrorCode upgradeDisposeDevice(DisposeDevice dev) throws IllegalAccessException, NoSuchMethodException,

View File

@ -388,7 +388,7 @@ public class UserAccountManagerImpl implements UserAccountManager {
return ErrorCode.ERR_LOGOUT; return ErrorCode.ERR_LOGOUT;
} }
if (ADMIN_USERS.length == 0) { if (ADMIN_USERS == null || ADMIN_USERS.length == 0) {
ADMIN_USERS = userPermissionConfigure.getAdminUsers().split(disposeConfigure.getSplitChar()); ADMIN_USERS = userPermissionConfigure.getAdminUsers().split(disposeConfigure.getSplitChar());
} }

View File

@ -26,7 +26,7 @@ public class LoginReq {
/** /**
* The User name. * The User name.
*/ */
@NotBlank(message = "userName 用户名不能为空") @NotBlank(message = "userName 用户名不能为空", groups = ValidGroups.LogoutReqValid.class)
@Pattern(regexp = AuthConfigValue.MYSQL_REGEX_CHARS, @Pattern(regexp = AuthConfigValue.MYSQL_REGEX_CHARS,
flags = Pattern.Flag.CASE_INSENSITIVE, flags = Pattern.Flag.CASE_INSENSITIVE,
message = "userName 用户名存在非法字符串") message = "userName 用户名存在非法字符串")

View File

@ -24,21 +24,21 @@ import lombok.NoArgsConstructor;
public class LoginRsp extends BaseRespStatus { public class LoginRsp extends BaseRespStatus {
/** /**
* 登录的用户名 * The User name.
*/ */
private String userName; private String userName;
/** /**
* 访问权限token * The Token.
*/ */
private String token; private String token;
/** /**
* 登录UTC时间戳(ms) * The Log time.
*/ */
private Long logTime; private Long logTime;
/** /**
* token超时时间 (分钟) * The Expire time.
*/ */
private Long expireTime; private Long expireTime;
} }

View File

@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@JsonPropertyOrder({"id", "devId", "status", "message"}) @JsonPropertyOrder({"ipAddr", "devId", "status", "message"})
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class BaseIdResp extends BaseRespStatus { public class BaseIdResp extends BaseRespStatus {
/** /**

View File

@ -0,0 +1,35 @@
package com.dispose.pojo.dto.protocol.base;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* The type Id arrays req.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class IdArraysReq {
/**
* The Id.
*/
@NotNull(message = "id 字段不能为空", groups = ValidGroups.IdArrayValid.class)
@Size(min = 1, message = "id 字段必须指定明确id编号", groups = ValidGroups.ExplicitIdArrayValid.class)
private String[] id;
/**
* The Task id.
*/
private String[] taskId;
}

View File

@ -7,7 +7,7 @@ package com.dispose.pojo.dto.protocol.base;
*/ */
public class ValidGroups { public class ValidGroups {
/** /**
* The interface Protocol common. * The interface Protocol common valid.
* *
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
@ -15,18 +15,42 @@ public class ValidGroups {
} }
/** /**
* The interface Login req. * The interface Login req valid.
* *
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
public interface LoginReqValid extends ProtocolCommonValid { public interface LoginReqValid extends LogoutReqValid {
} }
/** /**
* The interface Logout req. * The interface Logout req valid.
* *
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
public interface LogoutReqValid extends ProtocolCommonValid { public interface LogoutReqValid extends ProtocolCommonValid {
} }
/**
* The interface Add device valid.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
public interface AddDeviceValid extends ProtocolCommonValid {
}
/**
* The interface Id array valid.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
public interface IdArrayValid extends ProtocolCommonValid {
}
/**
* The interface Explicit id array valid.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
public interface ExplicitIdArrayValid extends IdArrayValid{
}
} }

View File

@ -2,6 +2,7 @@ package com.dispose.pojo.dto.protocol.device.manager;
import com.dispose.common.DisposeDeviceType; import com.dispose.common.DisposeDeviceType;
import com.dispose.common.HttpType; import com.dispose.common.HttpType;
import com.dispose.pojo.dto.protocol.base.ValidGroups;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -27,13 +28,13 @@ public class AddDeviceInfo {
/** /**
* The Ip addr. * The Ip addr.
*/ */
@NotBlank(message = "ipAddr IP地址不能为空") @NotBlank(message = "ipAddr IP地址不能为空", groups = ValidGroups.AddDeviceValid.class)
private String ipAddr; private String ipAddr;
/** /**
* The Ip port. * The Ip port.
*/ */
@NotNull(message = "ipPort 端口不能为null, 默认端口用空字符串表示") @NotNull(message = "ipPort 端口不能为null, 默认端口用空字符串表示", groups = ValidGroups.AddDeviceValid.class)
private String ipPort; private String ipPort;
/** /**
@ -79,7 +80,7 @@ public class AddDeviceInfo {
/** /**
* The Url path. * The Url path.
*/ */
@NotBlank(message = "urlPath URL接口路径不能为空") @NotBlank(message = "urlPath URL接口路径不能为空", groups = ValidGroups.AddDeviceValid.class)
private String urlPath; private String urlPath;
/** /**
@ -95,7 +96,7 @@ public class AddDeviceInfo {
/** /**
* The Capacity. * The Capacity.
*/ */
@NotNull(message = "capacity 处置设备能力不能为空") @NotNull(message = "capacity 处置设备能力不能为空", groups = ValidGroups.AddDeviceValid.class)
@Valid @Valid
private List<AddCapacityInfo> capacity; private List<AddCapacityInfo> capacity;
} }

View File

@ -1,5 +1,6 @@
package com.dispose.pojo.dto.protocol.device.manager; package com.dispose.pojo.dto.protocol.device.manager;
import com.dispose.pojo.dto.protocol.base.ValidGroups;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -24,7 +25,7 @@ public class AddDeviceReq {
/** /**
* The Items. * The Items.
*/ */
@NotNull(message = "items 设备列表不能为空") @NotNull(message = "items 设备列表不能为空", groups = ValidGroups.AddDeviceValid.class)
@Valid @Valid
private List<AddDeviceInfo> items; private List<AddDeviceInfo> items;
} }

View File

@ -0,0 +1,34 @@
package com.dispose.pojo.dto.protocol.device.manager;
import com.dispose.pojo.dto.protocol.base.BaseIdResp;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* The type Add device ret.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonPropertyOrder({"ipAddr", "ipPort", "devId", "status", "message"})
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AddDeviceRet extends BaseIdResp {
/**
* The Ip addr.
*/
private String ipAddr;
/**
* The Ip port.
*/
private String ipPort;
}

View File

@ -1,10 +1,7 @@
package com.dispose.pojo.dto.protocol.device.manager; package com.dispose.pojo.dto.protocol.device.manager;
import com.dispose.pojo.dto.protocol.base.BaseIdResp;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -14,15 +11,13 @@ import java.util.List;
* *
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@JsonPropertyOrder({"ipAddr", "ipPort", "devId", "status", "message"})
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class AddDeviceRsp extends BaseIdResp { public class AddDeviceRsp {
/** /**
* The Items. * The Items.
*/ */
private List<AddDeviceInfo> items; private List<AddDeviceRet> items;
/** /**
* Instantiates a new Add device rsp. * Instantiates a new Add device rsp.

View File

@ -0,0 +1,30 @@
package com.dispose.pojo.dto.protocol.device.manager;
import com.dispose.common.ObjectStatus;
import com.dispose.pojo.dto.protocol.base.BaseIdResp;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* The type Del device rsp.
*
* @author <huangxin@cmhi.chinamoblie.com>
*/
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"id", "devStatus", "status", "message"})
public class DelDeviceRsp extends BaseIdResp {
/**
* The Dev status.
*/
private ObjectStatus devStatus;
}

View File

@ -12,5 +12,19 @@ import java.util.List;
* @author <huangxin@cmhi.chinamoblie.com> * @author <huangxin@cmhi.chinamoblie.com>
*/ */
public interface DisposeDeviceManagerService { public interface DisposeDeviceManagerService {
/**
* Add dispose device list.
*
* @param devs the devs
* @return the list
*/
List<MulReturnType<ErrorCode, DisposeDevice>> addDisposeDevice(List<DisposeDevice> devs); List<MulReturnType<ErrorCode, DisposeDevice>> addDisposeDevice(List<DisposeDevice> devs);
/**
* Remove dispose device list.
*
* @param ids the ids
* @return the list
*/
List<MulReturnType<ErrorCode, DisposeDevice>> removeDisposeDevice(List<Long> ids);
} }

View File

@ -1,6 +1,7 @@
package com.dispose.service.impl; package com.dispose.service.impl;
import com.dispose.common.ErrorCode; import com.dispose.common.ErrorCode;
import com.dispose.common.ObjectStatus;
import com.dispose.manager.DisposeDeviceManager; import com.dispose.manager.DisposeDeviceManager;
import com.dispose.pojo.entity.DisposeDevice; import com.dispose.pojo.entity.DisposeDevice;
import com.dispose.pojo.po.MulReturnType; import com.dispose.pojo.po.MulReturnType;
@ -9,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -38,13 +40,41 @@ public class DisposeDeviceManagerServiceImpl implements DisposeDeviceManagerServ
List<MulReturnType<ErrorCode, DisposeDevice>> rspList = new ArrayList<>(); List<MulReturnType<ErrorCode, DisposeDevice>> rspList = new ArrayList<>();
devs.forEach(v -> { devs.forEach(v -> {
MulReturnType<ErrorCode, Long> ret = disposeDeviceManager.addDisposeDevice(v); MulReturnType<ErrorCode, Long> ret = null;
try {
v.setId(ret.getSecondParam()); ret = disposeDeviceManager.addDisposeDevice(v);
rspList.add(new MulReturnType<>(ret.getFirstParam(), v)); v.setId(ret.getSecondParam());
rspList.add(new MulReturnType<>(ret.getFirstParam(), v));
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
rspList.add(new MulReturnType<>(ErrorCode.ERR_SYSTEMEXCEPTION, v));
}
}); });
//AddDeviceRsp rspInfo = AddDeviceRsp.b return rspList;
}
/**
* Remove dispose device list.
*
* @param ids the ids
* @return the list
*/
@Override
public List<MulReturnType<ErrorCode, DisposeDevice>> removeDisposeDevice(List<Long> ids) {
List<MulReturnType<ErrorCode, DisposeDevice>> rspList = new ArrayList<>();
for (Long v : ids) {
DisposeDevice dev = new DisposeDevice();
MulReturnType<ErrorCode, ObjectStatus> ret = disposeDeviceManager.changeDisposeDeviceStatus(v,
ObjectStatus.DELETED);
dev.setId(v);
dev.setStatus(ret.getSecondParam());
rspList.add(new MulReturnType<>(ret.getFirstParam(), dev));
}
return rspList; return rspList;
} }

View File

@ -59,12 +59,12 @@
VALUES (#{ipAddr}, #{ipPort}, #{deviceType}, VALUES (#{ipAddr}, #{ipPort}, #{deviceType},
#{areaCode}, #{deviceName}, #{manufacturer}, #{areaCode}, #{deviceName}, #{manufacturer},
#{model}, #{version}, #{userName}, #{password}, #{urlPath}, #{urlType}, #{readme}, #{model}, #{version}, #{userName}, #{password}, #{urlPath}, #{urlType}, #{readme},
${@com.dispose.common.ObjectStatus@NORMAL.getCode()}) ${@com.dispose.common.ObjectStatus@NORMAL.getValue()})
</insert> </insert>
<update id="delDisposeDevice"> <update id="delDisposeDevice">
UPDATE dispose_device UPDATE dispose_device
SET status = ${@com.dispose.common.ObjectStatus@DELETED.getCode()} SET status = ${@com.dispose.common.ObjectStatus@DELETED.getValue()}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
@ -90,14 +90,14 @@
<update id="disableDisposeDevice"> <update id="disableDisposeDevice">
UPDATE UPDATE
dispose_device dispose_device
SET status = ${@com.dispose.common.ObjectStatus@DISABLED.getCode()} SET status = ${@com.dispose.common.ObjectStatus@DISABLED.getValue()}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<update id="availableDisposeDevice"> <update id="availableDisposeDevice">
UPDATE UPDATE
dispose_device dispose_device
SET status = ${@com.dispose.common.ObjectStatus@NORMAL.getCode()} SET status = ${@com.dispose.common.ObjectStatus@NORMAL.getValue()}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
</mapper> </mapper>

View File

@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* The type Dispose device mapper test. * The type Dispose device mapper test.
@ -106,43 +107,47 @@ public class DisposeDeviceMapperTest {
*/ */
@Test @Test
public void b1_addNewDisposeDevice() throws JsonProcessingException { public void b1_addNewDisposeDevice() throws JsonProcessingException {
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress("10.88.77.15", "");
String beforeVer = dev.getVersion();
if (dev.getVersion().equals("B5.2.27.7")) {
dev.setVersion("5.7.13");
} else {
dev.setVersion("B5.2.27.7");
}
DisposeDevice newDev = DisposeDevice.builder()
.id(dev.getId())
.ipAddr("10.88.77.15")
.ipPort("")
.deviceType(DisposeDeviceType.DPTECH_UMC)
.areaCode(0)
.deviceName("中移杭研实验室迪普清洗设备")
.manufacturer("DPTech")
.model("UMC")
.version(dev.getVersion())
.userName("admin")
.password("UMCAdministrator")
.urlPath("UMC/service/AbnormalFlowCleaningService")
.urlType(HttpType.HTTP)
.readme("实验室测试设备")
.status(ObjectStatus.NORMAL)
.build();
Assert.assertEquals(1, disposeDeviceMapper.upgradeDisposeDevice(newDev));
Assert.assertNotNull(dev.getId());
Assert.assertNotEquals(disposeDeviceMapper.getDeviceById(newDev.getId()).getVersion(), beforeVer);
try {
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(dev));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
List<DisposeDevice> devList = disposeDeviceMapper.selectAll(); List<DisposeDevice> devList = disposeDeviceMapper.selectAll();
devList.forEach(v -> {
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort());
String beforeVer = dev.getVersion();
if (dev.getVersion().equals("B5.2.27.7")) {
dev.setVersion("5.7.13");
} else {
dev.setVersion("B5.2.27.7");
}
DisposeDevice newDev = DisposeDevice.builder()
.id(dev.getId())
.ipAddr("10.88.77.15")
.ipPort("")
.deviceType(DisposeDeviceType.DPTECH_UMC)
.areaCode(0)
.deviceName("中移杭研实验室迪普清洗设备")
.manufacturer("DPTech")
.model("UMC")
.version(dev.getVersion())
.userName("admin")
.password("UMCAdministrator")
.urlPath("UMC/service/AbnormalFlowCleaningService")
.urlType(HttpType.HTTP)
.readme("实验室测试设备")
.status(ObjectStatus.NORMAL)
.build();
Assert.assertEquals(1, disposeDeviceMapper.upgradeDisposeDevice(newDev));
Assert.assertNotNull(dev.getId());
Assert.assertNotEquals(disposeDeviceMapper.getDeviceById(newDev.getId()).getVersion(), beforeVer);
try {
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(dev));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
});
devList = disposeDeviceMapper.selectAll();
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(devList)); log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(devList));
} }
@ -152,18 +157,18 @@ public class DisposeDeviceMapperTest {
* @throws JsonProcessingException the json processing exception * @throws JsonProcessingException the json processing exception
*/ */
@Test @Test
public void d1_getDeviceByAddress() throws JsonProcessingException { public void d1_getDeviceByAddress() {
DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress("10.88.77.15", ""); List<DisposeDevice> devList = disposeDeviceMapper.selectAll();
Assert.assertNotNull(dev);
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(dev));
dev = disposeDeviceMapper.getDeviceByAddress("10.88.77.88", "18080"); devList.forEach(v -> {
Assert.assertNotNull(dev); DisposeDevice dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(), v.getIpPort());
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(dev)); Assert.assertNotNull(dev);
dev = disposeDeviceMapper.getDeviceByAddress("10.88.77.15", "80"); dev = disposeDeviceMapper.getDeviceByAddress(v.getIpAddr(),
Assert.assertNull(dev); String.valueOf(Long.parseLong(Optional.ofNullable(v.getIpPort()).orElse("123")) + 1));
log.info(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(null));
Assert.assertNull(dev);
});
} }
/** /**