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 wrapper = new EntityWrapper().orderBy("id"); if (hostId != null) { wrapper.eq("id", hostId); } List hostList = hostService.selectList(wrapper); return R.ok().add(hostList); } @RequestMapping("/issue/type/auth") public R issueType(){ List issueTypes = issueTypeService.selectList(new EntityWrapper().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 wrapper = new EntityWrapper() .like("title", condition) .orderBy("settle").orderBy("create_time", false); Long hostId = getHostId(); if (hostId != null) { wrapper.eq("host_id", hostId); } List issues = issueService.selectList(wrapper); List result = new ArrayList<>(); Set 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)); } }