feat: 工单绑定设备

master
李小林 9 months ago
parent 064aa6e2f8
commit c8dbcbef46
  1. 39
      src/main/java/com/bellmann/common/enums/OrderLogCodeEnum.java
  2. 6
      src/main/java/com/bellmann/common/result/ResultCode.java
  3. 8
      src/main/java/com/bellmann/controller/DeviceStaticController.java
  4. 6
      src/main/java/com/bellmann/controller/OrderInfoController.java
  5. 34
      src/main/java/com/bellmann/controller/OrderLogController.java
  6. 27
      src/main/java/com/bellmann/converter/OrderLogConverter.java
  7. 2
      src/main/java/com/bellmann/mapper/DeviceStaticMapper.java
  8. 2
      src/main/java/com/bellmann/mapper/OrderInfoMapper.java
  9. 18
      src/main/java/com/bellmann/mapper/OrderLogMapper.java
  10. 34
      src/main/java/com/bellmann/model/entity/OrderLog.java
  11. 17
      src/main/java/com/bellmann/model/query/DevOuiSnoQuery.java
  12. 1
      src/main/java/com/bellmann/model/vo/OrderInfoVO.java
  13. 31
      src/main/java/com/bellmann/model/vo/OrderLogVO.java
  14. 4
      src/main/java/com/bellmann/service/DeviceStaticService.java
  15. 2
      src/main/java/com/bellmann/service/OrderInfoService.java
  16. 18
      src/main/java/com/bellmann/service/OrderLogService.java
  17. 29
      src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java
  18. 41
      src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java
  19. 41
      src/main/java/com/bellmann/service/impl/OrderLogServiceImpl.java
  20. 10
      src/main/resources/mapper/DeviceStaticMapper.xml
  21. 0
      src/main/resources/mapper/OrderInfoDetailMapper.xml
  22. 10
      src/main/resources/mapper/OrderInfoMapper.xml
  23. 18
      src/main/resources/mapper/OrderLogMapper.xml

@ -0,0 +1,39 @@
package com.bellmann.common.enums;
import com.bellmann.common.base.IBaseEnum;
import lombok.Getter;
public enum OrderLogCodeEnum implements IBaseEnum<String> {
SUCCESS("0","成功"),
THE_DEVICE_IS_NOT_ONLINE("1","设备不在线"),
THE_DEVICE_VERSION_IS_NOT_SUPPORTED("2","设备版本不支持"),
ERROR_IS_ISSUED_UNDER_THE_BUSINESS_PARAMETERS("3","业务参数下发出错"),
FAILED_TO_CREATE_A_CUSTOMER("4","创建客户失败"),
CUSTOM_INFO_AND_DEVICE_BINDING_FAILED("5","客户信息与设备绑定失败"),
UPDATE_DEVICE_INFO_FAILED("6","更新设备信息出错"),
FAILED_TO_LOG_OUT_THE_DEVICE("7","注销设备失败"),
FAILED_TO_LOG_OUT_OF_THE_CUSTOMER("8","注销客户失败"),
FAILED_TO_UPDATE_CUSTOMER_INFORMATION("9","更新客户信息失败"),
OTHER_ERRORS("10","其他错误"),
;
@Getter
private String value;
@Getter
private String label;
OrderLogCodeEnum(String value, String label){
this.label = label;
this.value = value;
}
}

@ -105,7 +105,11 @@ public enum ResultCode implements IResultCode, Serializable {
BAN_UPDATE_ORDER_STATUS_MANUAL_INTERVENTION("F0014", "禁止修改工单状态为手工干预"),
NOT_OPERATE_ORDER("F0015","无法操作此类工单" ),
NOT_GET_DEVICE("F0016","未获取到设备" ),
NBI_ERROR("F0017","调用NBI接口报错");
NBI_ERROR("F0017","调用NBI接口报错"),
DEV_OUI_SNO_FORMAT_ERROR("F0018","设备标识格式不正确"),
DEVICE_NOT_REGISTERED("F0019","该设备尚未注册,请先注册终端"),
DEVICE_ALREADY_BINDING_OTHER_LOGIC("F0020", "该设备已经绑定了其他逻辑ID,请解绑此设备后再操作!"),
LOGICID_ALREADY_DEVICE("F0021","逻辑ID已有绑定设备,如需绑定其他设备,请解绑后操作!");
@Override
public String getCode() {
return code;

@ -6,6 +6,7 @@ import com.bellmann.common.result.Result;
import com.bellmann.model.form.EquipmentAddForm;
import com.bellmann.model.form.EquipmentDetailForm;
import com.bellmann.model.form.PrivateProfileForm;
import com.bellmann.model.query.DevOuiSnoQuery;
import com.bellmann.model.query.SelectQuery;
import com.bellmann.model.vo.EquipmentVO;
import com.bellmann.service.DeviceStaticService;
@ -74,4 +75,11 @@ public class DeviceStaticController {
return deviceStaticService.unbindingCustom(devId);
}
//--------------资源管理API结束--------------------
//--------------工单管理查询devOuiSno分页开始
@PostMapping("dev-oui-sno-page")
@Operation(summary = "工单管理查询devOuiSno")
public PageResult<String> devOuiSnoPage(@RequestBody DevOuiSnoQuery query){
return deviceStaticService.devOuiSnoPage(query);
}
}

@ -66,5 +66,11 @@ public class OrderInfoController {
return orderInfoService.updateForm(form);
}
@PutMapping("binding-dev-oui-sno/{orderId}/{devOuiSno}")
@Operation(summary = "绑定设备")
public Result<String> bindingOuiSno(@PathVariable String devOuiSno, @PathVariable Long orderId){
return orderInfoService.bindingOuiSno(devOuiSno,orderId);
}
}

@ -0,0 +1,34 @@
package com.bellmann.controller;
import com.bellmann.common.base.BasePageQuery;
import com.bellmann.common.result.PageResult;
import com.bellmann.model.vo.OrderLogVO;
import com.bellmann.service.OrderLogService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 前端控制器
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
@Tag(name = "22.工单日志")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/order-log/v1")
public class OrderLogController {
private final OrderLogService orderLogService;
@PostMapping("page/{orderId}")
@Operation(summary = "工单日志分页")
public PageResult<OrderLogVO> page(@RequestBody BasePageQuery query, @PathVariable Long orderId){
return orderLogService.page(query,orderId);
}
}

@ -0,0 +1,27 @@
package com.bellmann.converter;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bellmann.model.entity.OrderLog;
import com.bellmann.model.vo.OrderLogVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
/**
* 用户对象转换器
*
*
* @since 2022/6/8
*/
@Mapper(componentModel = "spring")
public interface OrderLogConverter {
@Mappings({
@Mapping(target = "logCode", expression = "java(com.bellmann.common.base.IBaseEnum.getLabelByValue(entity.getLogCode(), com.bellmann.common.enums.OrderLogCodeEnum.class))"),
})
OrderLogVO entity2PageVo(OrderLog entity);
Page<OrderLogVO> entity2PageVo(Page<OrderLog> entity);
}

@ -20,4 +20,6 @@ public interface DeviceStaticMapper extends BaseMapper<DeviceStatic> {
DeviceDetailBO orderByDevSnoOui(@Param("sno") String sno, @Param("oui") String oui,@Param("devRemark4") String devRemark4);
DeviceDetailBO orderByPppoeAccount(@Param("status") String status, @Param("pppoeAccount") String pppoeAccount);
String selectDevRemark4ByOrderSN(@Param("userSnNo") String userSnNo);
}

@ -26,4 +26,6 @@ public interface OrderInfoMapper extends BaseMapper<OrderInfo> {
OrderInfoVO getOrderById(Long orderId);
OrderInfo orderSnoOuiPppoeUnique(@Param("orderId") Long orderId);
String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo);
}

@ -0,0 +1,18 @@
package com.bellmann.mapper;
import com.bellmann.model.entity.OrderLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
@Mapper
public interface OrderLogMapper extends BaseMapper<OrderLog> {
}

@ -0,0 +1,34 @@
package com.bellmann.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
@Data
@TableName("itms_order_log")
@EqualsAndHashCode(callSuper = false)
public class OrderLog implements Serializable {
private static final long serialVersionUID = 1L;
private Long orderId;
private Date logTime;
private String logCode;
private String logContent;
}

@ -0,0 +1,17 @@
package com.bellmann.model.query;
import com.bellmann.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Schema(description ="devOuiSno分页查询对象")
@Data
public class DevOuiSnoQuery extends BasePageQuery {
@Schema(description="关键字(部门名称)")
private String devOuiSno;
}

@ -49,7 +49,6 @@ public class OrderInfoVO {
private String devAccessType;
@JsonIgnore
private String devSnoOui;
@JsonIgnore

@ -0,0 +1,31 @@
package com.bellmann.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
@Data
@Schema(description = "工单日志视图")
public class OrderLogVO {
private Long orderId;
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
private Date logTime;
private String logCode;
private String logContent;
}

@ -1,10 +1,12 @@
package com.bellmann.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bellmann.common.result.PageResult;
import com.bellmann.common.result.Result;
import com.bellmann.model.form.EquipmentAddForm;
import com.bellmann.model.form.EquipmentDetailForm;
import com.bellmann.model.form.PrivateProfileForm;
import com.bellmann.model.query.DevOuiSnoQuery;
import com.bellmann.model.query.SelectQuery;
import com.bellmann.model.vo.EquipmentVO;
@ -27,4 +29,6 @@ public interface DeviceStaticService {
Result<String> deleteDev(List<Long> ids);
Result<String> unbindingCustom(Long devId);
PageResult<String> devOuiSnoPage(DevOuiSnoQuery query);
}

@ -28,4 +28,6 @@ public interface OrderInfoService {
Result<ModifyOrderForm> modifyForm(Long orderId);
Result<String> updateForm(ModifyOrderForm form);
Result<String> bindingOuiSno(String devOuiSno, Long orderId);
}

@ -0,0 +1,18 @@
package com.bellmann.service;
import com.bellmann.common.base.BasePageQuery;
import com.bellmann.common.result.PageResult;
import com.bellmann.model.vo.OrderLogVO;
/**
* <p>
* 服务类
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
public interface OrderLogService {
PageResult<OrderLogVO> page(BasePageQuery query, Long orderId);
}

@ -12,6 +12,8 @@ import com.bellmann.common.enums.DevOnlineEnum;
import com.bellmann.common.enums.DevOwnerClassEnum;
import com.bellmann.common.enums.DevRegStatusEnum;
import com.bellmann.common.enums.DevStatusEnum;
import com.bellmann.common.exception.BusinessException;
import com.bellmann.common.result.PageResult;
import com.bellmann.common.result.Result;
import com.bellmann.common.result.ResultCode;
import com.bellmann.converter.DeviceStaticConverter;
@ -25,6 +27,7 @@ import com.bellmann.model.entity.*;
import com.bellmann.model.form.EquipmentAddForm;
import com.bellmann.model.form.EquipmentDetailForm;
import com.bellmann.model.form.PrivateProfileForm;
import com.bellmann.model.query.DevOuiSnoQuery;
import com.bellmann.model.query.SelectQuery;
import com.bellmann.model.vo.EquipmentCustomerVO;
import com.bellmann.model.vo.EquipmentDetailVO;
@ -40,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@ -233,4 +237,29 @@ public class DeviceStaticServiceImpl implements DeviceStaticService {
);
return Result.success();
}
@Override
public PageResult<String> devOuiSnoPage(DevOuiSnoQuery query) {
int pageNum = query.getPageNum();
int pageSize = query.getPageSize();
String devOuiSno = query.getDevOuiSno();
if(!devOuiSno.contains("-") || devOuiSno.split("-").length != 2){
throw new BusinessException(ResultCode.DEV_OUI_SNO_FORMAT_ERROR);
}
Page<DeviceStatic> page = new Page<>(pageNum,pageSize);
String[] split = devOuiSno.split("-");
String devOui = split[0];
String devSno = split[1];
Page<DeviceStatic> snoOuiPage = deviceStaticMapper.selectPage(page, new LambdaQueryWrapper<DeviceStatic>()
.eq(DeviceStatic::getDevSno, devSno)
.eq(DeviceStatic::getDevRemark3, devOui)
);
List<String> list = snoOuiPage.getRecords().stream().map(deviceStatic -> deviceStatic.getDevRemark3() +
"-" +
deviceStatic.getDevSno()).distinct().collect(Collectors.toList());
Page<String> stringPage = new Page<>(pageNum,pageSize);
stringPage.setRecords(list);
stringPage.setTotal(list.size());
return PageResult.success(stringPage);
}
}

@ -1,5 +1,6 @@
package com.bellmann.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -15,6 +16,7 @@ import com.bellmann.mapper.DeviceTypeVerDetailMapper;
import com.bellmann.mapper.OrderInfoMapper;
import com.bellmann.mapper.OrderServiceMapper;
import com.bellmann.model.bo.DeviceDetailBO;
import com.bellmann.model.entity.DeviceStatic;
import com.bellmann.model.entity.OrderInfo;
import com.bellmann.model.entity.OrderService;
import com.bellmann.model.form.ModifyOrderForm;
@ -315,4 +317,43 @@ public class OrderInfoServiceImpl implements OrderInfoService {
);
return Result.success();
}
@Override
public Result<String> bindingOuiSno(String devOuiSno, Long orderId) {
String[] split = devOuiSno.split("-");
if (split.length!=2){
throw new BusinessException(ResultCode.DEV_OUI_SNO_FORMAT_ERROR);
}
Long count = deviceStaticMapper.selectCount(new LambdaQueryWrapper<DeviceStatic>()
.eq(DeviceStatic::getDevSno, split[1])
.eq(DeviceStatic::getDevRemark3, split[0])
);
if (count==0L){
throw new BusinessException(ResultCode.DEVICE_NOT_REGISTERED);
}
List<DeviceStatic> list = deviceStaticMapper.selectList(new QueryWrapper<DeviceStatic>()
.eq("dev_sno", split[1])
.eq("dev_remark3", split[0])
);
if (!list.isEmpty()){
throw new BusinessException(ResultCode.DEVICE_ALREADY_BINDING_OTHER_LOGIC);
}
OrderInfo orderInfo = orderInfoMapper.selectOne(new QueryWrapper<OrderInfo>()
.select("user_sn_no", "unique_user_id")
.eq("order_id", orderId)
);
String devRemark4 = deviceStaticMapper.selectDevRemark4ByOrderSN(orderInfo.getUserSnNo());
if (!"0".equals(devRemark4)){
throw new BusinessException(ResultCode.LOGICID_ALREADY_DEVICE);
}
String devSnoOui = orderInfoMapper.selectOui(devOuiSno,orderInfo.getUserSnNo());
if (!"0".equals(devSnoOui)){
throw new BusinessException(ResultCode.LOGICID_ALREADY_DEVICE);
}
orderInfoMapper.update(null,new LambdaUpdateWrapper<OrderInfo>()
.eq(OrderInfo::getOrderId,orderId)
.set(OrderInfo::getDevSnoOui,devOuiSno)
);
return Result.success();
}
}

@ -0,0 +1,41 @@
package com.bellmann.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bellmann.common.base.BasePageQuery;
import com.bellmann.common.result.PageResult;
import com.bellmann.converter.OrderLogConverter;
import com.bellmann.mapper.OrderLogMapper;
import com.bellmann.model.entity.OrderLog;
import com.bellmann.model.vo.OrderLogVO;
import com.bellmann.service.OrderLogService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author 李小林
* @since 2024-06-21
*/
@Service
@RequiredArgsConstructor
public class OrderLogServiceImpl implements OrderLogService {
private final OrderLogMapper orderLogMapper;
private final OrderLogConverter orderLogConverter;
@Override
public PageResult<OrderLogVO> page(BasePageQuery query, Long orderId) {
int pageNum = query.getPageNum();
int pageSize = query.getPageSize();
Page<OrderLog> page = new Page<>(pageNum,pageSize);
Page<OrderLog> logPage = orderLogMapper.selectPage(page, new LambdaQueryWrapper<OrderLog>()
.eq(OrderLog::getOrderId, orderId)
.orderByDesc(OrderLog::getLogTime)
);
return PageResult.success(orderLogConverter.entity2PageVo(logPage));
}
}

@ -194,4 +194,14 @@
</where>
limit 1
</select>
<select id="selectDevRemark4ByOrderSN" resultType="java.lang.String">
SELECT COUNT
( 1 ) AS devRemark4
FROM
itms_device_static t1
LEFT JOIN itms_order_info t2 ON t2.unique_user_id = t1.dev_remark4
WHERE
t2.user_sn_no = #{userSnNo}
</select>
</mapper>

@ -125,4 +125,14 @@
</select>
<select id="selectOui" resultType="java.lang.String">
SELECT COUNT
( 1 ) AS dev_sno_oui
FROM
itms_order_info
WHERE
dev_sno_oui = #{devOuiSno}
AND order_status IN ( '0', '1', '2' )
AND user_sn_no != #{userSnNo}
</select>
</mapper>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bellmann.mapper.OrderLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.bellmann.model.entity.OrderLog">
<id column="order_id" property="orderId" />
<result column="log_time" property="logTime" />
<result column="log_code" property="logCode" />
<result column="log_content" property="logContent" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
order_id, log_time, log_code, log_content
</sql>
</mapper>
Loading…
Cancel
Save