package com.zy.sc.manager.controller;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.Cools;
|
import com.core.common.DateUtils;
|
import com.core.common.R;
|
import com.core.common.SnowflakeIdWorker;
|
import com.core.exception.CoolException;
|
import com.zy.sc.common.service.GeoService;
|
import com.zy.sc.common.web.BaseController;
|
import com.zy.sc.manager.controller.param.MobileIssueParam;
|
import com.zy.sc.manager.controller.result.AppHostIssueVo;
|
import com.zy.sc.manager.controller.result.AppIssueVo;
|
import com.zy.sc.manager.entity.Issue;
|
import com.zy.sc.manager.entity.IssueType;
|
import com.zy.sc.manager.service.IssueService;
|
import com.zy.sc.manager.service.IssueTypeService;
|
import com.zy.sc.system.entity.Host;
|
import com.zy.sc.system.service.HostService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.*;
|
|
/**
|
* Created by vincent on 2021/12/20
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("app")
|
public class AppController extends BaseController {
|
|
public static final String REGEX_MOBILE = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
|
|
@Autowired
|
private HostService hostService;
|
@Autowired
|
private IssueTypeService issueTypeService;
|
@Autowired
|
private IssueService issueService;
|
@Autowired
|
private SnowflakeIdWorker snowflakeIdWorker;
|
@Autowired
|
private GeoService geoService;
|
|
@RequestMapping("/host/list/auth")
|
@ManagerAuth
|
public R hostList(){
|
Long hostId = getHostId();
|
Wrapper<Host> wrapper = new EntityWrapper<Host>().orderBy("id");
|
if (hostId != null) {
|
wrapper.eq("id", hostId);
|
}
|
List<Host> hostList = hostService.selectList(wrapper);
|
return R.ok().add(hostList);
|
}
|
|
@RequestMapping("/issue/type/auth")
|
public R issueType(){
|
List<IssueType> issueTypes = issueTypeService.selectList(new EntityWrapper<IssueType>().orderBy("id"));
|
return R.ok().add(issueTypes);
|
}
|
|
@RequestMapping("/issue/save/auth")
|
@ManagerAuth(memo = "故障上报")
|
public R issueSave(MobileIssueParam param){
|
if (Cools.isEmpty(param.getHostName())) {
|
return R.error("请选择所属项目");
|
}
|
Host host = hostService.selectByName(param.getHostName());
|
if (Cools.isEmpty(param.getIssueTypeName())) {
|
return R.error("请选择故障类型");
|
}
|
IssueType issueType = issueTypeService.selectByName(param.getIssueTypeName());
|
if (Cools.isEmpty(param.getTel())) {
|
return R.error("请输入联系方式");
|
}
|
if (!param.getTel().matches(REGEX_MOBILE)) {
|
return R.error("请输入正确的手机号");
|
}
|
if (Cools.isEmpty(param.getTitle())) {
|
return R.error("请输入问题概述");
|
}
|
Date now = new Date();
|
Date startTime = DateUtils.convert(param.getStartTime(), DateUtils.yyyyMMdd_F);
|
// 保存故障
|
Issue issue = new Issue(
|
String.valueOf(snowflakeIdWorker.nextId()), // 故障编号
|
host.getId(), // 所属项目
|
issueType.getId(), // 故障类型
|
param.getTitle(), // 问题概述
|
null, // 故障原因
|
null, // 解决办法
|
JSONArray.toJSONString(param.getVideoSrc()), // 文件列表
|
JSONArray.toJSONString(param.getImgArr()), // 图片
|
startTime, // 发生日期
|
null, // 处理日期
|
null, // 更新日期
|
param.getDiscoverer(), // 发现人
|
param.getTel(), // 联系方式
|
null, // 供应商
|
2, //
|
1, // 状态
|
getUserId(), // 添加人员
|
now, // 添加时间
|
getUserId(), // 修改人员
|
now, // 修改时间
|
param.getMemo() // 备注
|
);
|
if (!issueService.insert(issue)) {
|
throw new CoolException("反馈失败,请联系管理员");
|
}
|
return R.ok("问题上报成功");
|
}
|
|
@RequestMapping("/issue/list/auth")
|
@ManagerAuth
|
public R sensorList(@RequestParam(required = false) String condition){
|
Wrapper<Issue> wrapper = new EntityWrapper<Issue>()
|
.like("title", condition)
|
.orderBy("settle").orderBy("create_time", false);
|
Long hostId = getHostId();
|
if (hostId != null) {
|
wrapper.eq("host_id", hostId);
|
}
|
List<Issue> issues = issueService.selectList(wrapper);
|
List<AppHostIssueVo> result = new ArrayList<>();
|
Set<Long> hostSet = new HashSet<>();
|
for (Issue issue : issues) {
|
AppIssueVo vo = new AppIssueVo();
|
vo.setIssueId(issue.getId());
|
vo.setTitle(issue.getTitle().length()>12?issue.getTitle().substring(0, 12):issue.getTitle());
|
vo.setStartTime(issue.getStartTime$().length()>11?issue.getStartTime$().substring(0, 11):issue.getStartTime$());
|
vo.setSettle(issue.getSettle$());
|
|
if (!hostSet.contains(issue.getHostId())) {
|
hostSet.add(issue.getHostId());
|
Host host = hostService.selectById(issue.getHostId());
|
AppHostIssueVo hostVo = new AppHostIssueVo();
|
hostVo.setHostId(host.getId());
|
hostVo.setHostName(host.getName());
|
result.add(hostVo);
|
hostVo.getIssues().add(vo);
|
} else {
|
for (AppHostIssueVo hostVo : result) {
|
if (hostVo.getHostId().equals(issue.getHostId())) {
|
hostVo.getIssues().add(vo);
|
}
|
}
|
}
|
}
|
return R.ok().add(result);
|
}
|
|
@RequestMapping("/issue/detl/auth")
|
@ManagerAuth
|
public R issueDetl(@RequestParam Long issueId){
|
return R.ok().add(issueService.selectById(issueId));
|
}
|
|
}
|