diff --git a/src/main/java/com/bellmann/common/enums/OrderLogCodeEnum.java b/src/main/java/com/bellmann/common/enums/OrderLogCodeEnum.java new file mode 100644 index 0000000..89b661d --- /dev/null +++ b/src/main/java/com/bellmann/common/enums/OrderLogCodeEnum.java @@ -0,0 +1,39 @@ +package com.bellmann.common.enums; + +import com.bellmann.common.base.IBaseEnum; +import lombok.Getter; + +public enum OrderLogCodeEnum implements IBaseEnum { + + 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; + } +} diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 9749520..e682baa 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -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; diff --git a/src/main/java/com/bellmann/controller/DeviceStaticController.java b/src/main/java/com/bellmann/controller/DeviceStaticController.java index 2eb2f70..3c3f234 100644 --- a/src/main/java/com/bellmann/controller/DeviceStaticController.java +++ b/src/main/java/com/bellmann/controller/DeviceStaticController.java @@ -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 devOuiSnoPage(@RequestBody DevOuiSnoQuery query){ + return deviceStaticService.devOuiSnoPage(query); + } } diff --git a/src/main/java/com/bellmann/controller/OrderInfoController.java b/src/main/java/com/bellmann/controller/OrderInfoController.java index 4e5a73d..68d7c82 100644 --- a/src/main/java/com/bellmann/controller/OrderInfoController.java +++ b/src/main/java/com/bellmann/controller/OrderInfoController.java @@ -66,5 +66,11 @@ public class OrderInfoController { return orderInfoService.updateForm(form); } + + @PutMapping("binding-dev-oui-sno/{orderId}/{devOuiSno}") + @Operation(summary = "绑定设备") + public Result bindingOuiSno(@PathVariable String devOuiSno, @PathVariable Long orderId){ + return orderInfoService.bindingOuiSno(devOuiSno,orderId); + } } diff --git a/src/main/java/com/bellmann/controller/OrderLogController.java b/src/main/java/com/bellmann/controller/OrderLogController.java new file mode 100644 index 0000000..d99d27c --- /dev/null +++ b/src/main/java/com/bellmann/controller/OrderLogController.java @@ -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.*; + +/** + *

+ * 前端控制器 + *

+ * + * @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 page(@RequestBody BasePageQuery query, @PathVariable Long orderId){ + return orderLogService.page(query,orderId); + } +} + diff --git a/src/main/java/com/bellmann/converter/OrderLogConverter.java b/src/main/java/com/bellmann/converter/OrderLogConverter.java new file mode 100644 index 0000000..500387f --- /dev/null +++ b/src/main/java/com/bellmann/converter/OrderLogConverter.java @@ -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 entity2PageVo(Page entity); + + +} diff --git a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java index b2973d5..e1ba61b 100644 --- a/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceStaticMapper.java @@ -20,4 +20,6 @@ public interface DeviceStaticMapper extends BaseMapper { 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); } diff --git a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java index 028a5fc..b1de70c 100644 --- a/src/main/java/com/bellmann/mapper/OrderInfoMapper.java +++ b/src/main/java/com/bellmann/mapper/OrderInfoMapper.java @@ -26,4 +26,6 @@ public interface OrderInfoMapper extends BaseMapper { OrderInfoVO getOrderById(Long orderId); OrderInfo orderSnoOuiPppoeUnique(@Param("orderId") Long orderId); + + String selectOui(@Param("devOuiSno") String devOuiSno, @Param("userSnNo") String userSnNo); } diff --git a/src/main/java/com/bellmann/mapper/OrderLogMapper.java b/src/main/java/com/bellmann/mapper/OrderLogMapper.java new file mode 100644 index 0000000..a241c0f --- /dev/null +++ b/src/main/java/com/bellmann/mapper/OrderLogMapper.java @@ -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; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 李小林 + * @since 2024-06-21 + */ +@Mapper +public interface OrderLogMapper extends BaseMapper { + +} diff --git a/src/main/java/com/bellmann/model/entity/OrderLog.java b/src/main/java/com/bellmann/model/entity/OrderLog.java new file mode 100644 index 0000000..71b1174 --- /dev/null +++ b/src/main/java/com/bellmann/model/entity/OrderLog.java @@ -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; + +/** + *

+ * + *

+ * + * @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; + + +} diff --git a/src/main/java/com/bellmann/model/query/DevOuiSnoQuery.java b/src/main/java/com/bellmann/model/query/DevOuiSnoQuery.java new file mode 100644 index 0000000..0c9ef7d --- /dev/null +++ b/src/main/java/com/bellmann/model/query/DevOuiSnoQuery.java @@ -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; + +} diff --git a/src/main/java/com/bellmann/model/vo/OrderInfoVO.java b/src/main/java/com/bellmann/model/vo/OrderInfoVO.java index 0d79417..c1b0093 100644 --- a/src/main/java/com/bellmann/model/vo/OrderInfoVO.java +++ b/src/main/java/com/bellmann/model/vo/OrderInfoVO.java @@ -49,7 +49,6 @@ public class OrderInfoVO { private String devAccessType; - @JsonIgnore private String devSnoOui; @JsonIgnore diff --git a/src/main/java/com/bellmann/model/vo/OrderLogVO.java b/src/main/java/com/bellmann/model/vo/OrderLogVO.java new file mode 100644 index 0000000..e501834 --- /dev/null +++ b/src/main/java/com/bellmann/model/vo/OrderLogVO.java @@ -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; + +/** + *

+ * + *

+ * + * @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; + + +} diff --git a/src/main/java/com/bellmann/service/DeviceStaticService.java b/src/main/java/com/bellmann/service/DeviceStaticService.java index 1ca45da..1a012d6 100644 --- a/src/main/java/com/bellmann/service/DeviceStaticService.java +++ b/src/main/java/com/bellmann/service/DeviceStaticService.java @@ -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 deleteDev(List ids); Result unbindingCustom(Long devId); + + PageResult devOuiSnoPage(DevOuiSnoQuery query); } diff --git a/src/main/java/com/bellmann/service/OrderInfoService.java b/src/main/java/com/bellmann/service/OrderInfoService.java index 40afa31..b237bda 100644 --- a/src/main/java/com/bellmann/service/OrderInfoService.java +++ b/src/main/java/com/bellmann/service/OrderInfoService.java @@ -28,4 +28,6 @@ public interface OrderInfoService { Result modifyForm(Long orderId); Result updateForm(ModifyOrderForm form); + + Result bindingOuiSno(String devOuiSno, Long orderId); } diff --git a/src/main/java/com/bellmann/service/OrderLogService.java b/src/main/java/com/bellmann/service/OrderLogService.java new file mode 100644 index 0000000..10a9d1e --- /dev/null +++ b/src/main/java/com/bellmann/service/OrderLogService.java @@ -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; + +/** + *

+ * 服务类 + *

+ * + * @author 李小林 + * @since 2024-06-21 + */ +public interface OrderLogService { + + PageResult page(BasePageQuery query, Long orderId); +} diff --git a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java index 3df16af..2f51a91 100644 --- a/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/DeviceStaticServiceImpl.java @@ -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 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 page = new Page<>(pageNum,pageSize); + String[] split = devOuiSno.split("-"); + String devOui = split[0]; + String devSno = split[1]; + Page snoOuiPage = deviceStaticMapper.selectPage(page, new LambdaQueryWrapper() + .eq(DeviceStatic::getDevSno, devSno) + .eq(DeviceStatic::getDevRemark3, devOui) + ); + List list = snoOuiPage.getRecords().stream().map(deviceStatic -> deviceStatic.getDevRemark3() + + "-" + + deviceStatic.getDevSno()).distinct().collect(Collectors.toList()); + Page stringPage = new Page<>(pageNum,pageSize); + stringPage.setRecords(list); + stringPage.setTotal(list.size()); + return PageResult.success(stringPage); + } } diff --git a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java index 051362a..8f48f13 100644 --- a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java @@ -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 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() + .eq(DeviceStatic::getDevSno, split[1]) + .eq(DeviceStatic::getDevRemark3, split[0]) + ); + if (count==0L){ + throw new BusinessException(ResultCode.DEVICE_NOT_REGISTERED); + } + List list = deviceStaticMapper.selectList(new QueryWrapper() + .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() + .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() + .eq(OrderInfo::getOrderId,orderId) + .set(OrderInfo::getDevSnoOui,devOuiSno) + ); + return Result.success(); + } } diff --git a/src/main/java/com/bellmann/service/impl/OrderLogServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderLogServiceImpl.java new file mode 100644 index 0000000..c2fd783 --- /dev/null +++ b/src/main/java/com/bellmann/service/impl/OrderLogServiceImpl.java @@ -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; + +/** + *

+ * 服务实现类 + *

+ * + * @author 李小林 + * @since 2024-06-21 + */ +@Service +@RequiredArgsConstructor +public class OrderLogServiceImpl implements OrderLogService { + + private final OrderLogMapper orderLogMapper; + + private final OrderLogConverter orderLogConverter; + @Override + public PageResult page(BasePageQuery query, Long orderId) { + int pageNum = query.getPageNum(); + int pageSize = query.getPageSize(); + Page page = new Page<>(pageNum,pageSize); + Page logPage = orderLogMapper.selectPage(page, new LambdaQueryWrapper() + .eq(OrderLog::getOrderId, orderId) + .orderByDesc(OrderLog::getLogTime) + ); + return PageResult.success(orderLogConverter.entity2PageVo(logPage)); + } +} diff --git a/src/main/resources/mapper/DeviceStaticMapper.xml b/src/main/resources/mapper/DeviceStaticMapper.xml index 94d1bd7..169e9b0 100644 --- a/src/main/resources/mapper/DeviceStaticMapper.xml +++ b/src/main/resources/mapper/DeviceStaticMapper.xml @@ -194,4 +194,14 @@ limit 1 + + diff --git a/src/main/java/com/bellmann/mapper/OrderInfoDetailMapper.xml b/src/main/resources/mapper/OrderInfoDetailMapper.xml similarity index 100% rename from src/main/java/com/bellmann/mapper/OrderInfoDetailMapper.xml rename to src/main/resources/mapper/OrderInfoDetailMapper.xml diff --git a/src/main/resources/mapper/OrderInfoMapper.xml b/src/main/resources/mapper/OrderInfoMapper.xml index d1f801e..546595e 100644 --- a/src/main/resources/mapper/OrderInfoMapper.xml +++ b/src/main/resources/mapper/OrderInfoMapper.xml @@ -125,4 +125,14 @@ + diff --git a/src/main/resources/mapper/OrderLogMapper.xml b/src/main/resources/mapper/OrderLogMapper.xml new file mode 100644 index 0000000..f0d1ecf --- /dev/null +++ b/src/main/resources/mapper/OrderLogMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + order_id, log_time, log_code, log_content + + +