package fun.kwok.natserver.controller;
import fun.kwok.natserver.entity.ResultInfo;
import fun.kwok.natserver.entity.SystemUser;
import fun.kwok.natserver.service.*;
import fun.kwok.natserver.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
public class AdminController {
@Autowired
ResultService resultService;
@Autowired
SystemUserService systemUserService;
@Autowired
JobService jobService;
@Autowired
TubeService tubeService;
@Autowired
TubeUserService tubeUserService;
@Autowired
UserInfoService userInfoService;
@ResponseBody
@PostMapping("/admin/getGroup")
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo getGroup(HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
if (systemUser.getRole()==0)
return new ResultInfo(true,200,"success",systemUserService.getGroup());
else if (systemUser.getRole()==1) {
List<SystemUser> systemUserList = new ArrayList<SystemUser>();
systemUserList.add(systemUser);
return new ResultInfo(true, 200, "success", systemUserList);
}
return new ResultInfo(false,null,"未知错误",null);
}
@ResponseBody
@PostMapping("/admin/getJob")
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo getJob(@RequestParam(value="groupid",required=false) Integer groupid,
@RequestParam(value="status",required=false) Integer status,
HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
if (systemUser.getRole()==0)
return new ResultInfo(true,200,"success",jobService.getAllJobByGroupId(groupid,status));
else if (systemUser.getRole()==1){
return new ResultInfo(true,200,"success",jobService.getAllJobByGroupId(systemUser.getId(),status));
}
return new ResultInfo(false,null,"未知错误",null);
}
@ResponseBody
@PostMapping("/admin/getJobData") //获取任务分页列表
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo getJobData(
@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize,
@RequestParam(value="groupid",required=false) Integer groupid,
@RequestParam(value="status",required=false) Integer status,
HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
if (systemUser.getRole()==0)
return new ResultInfo(true,200,"success",jobService.getJobData(pageNum,pageSize,groupid,status));
else if (systemUser.getRole()==1){
return new ResultInfo(true,200,"success",jobService.getJobData(pageNum,pageSize,systemUser.getId(),status));
}
return new ResultInfo(false,null,"未知错误",null);
}
@ResponseBody
@GetMapping("/admin/getTubeCount")
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo getTubeCount(HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
Integer groupid;
if (systemUser.getRole()==0)
groupid=null;
else
groupid=systemUser.getId();
int[] result=new int[3];
result[0]=tubeService.countTube(groupid);// 已采集试管
result[1]=tubeService.countTubeStatus12(groupid);//已检测试管
result[2]=tubeService.countTubeStatus1(groupid);//阴性试管
return new ResultInfo(true,200,"success",result);
}
@ResponseBody
@GetMapping("/admin/getTubeUserCount")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResultInfo getTubeUserCount( ){
int[] result=new int[3];
result[0]=tubeUserService.countTubeUser();// 已采集人次
result[1]=tubeUserService.countTubeUser12();//已检测人次
result[2]=tubeUserService.countTubeUser1();//阴性人次
return new ResultInfo(true,200,"success",result);
}
@ResponseBody
@GetMapping("/admin/getUserInfoCount")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResultInfo getUserInfoCount( ){
return new ResultInfo(true,200,"success",userInfoService.userInfoCount());
}
@ResponseBody
@PostMapping("/admin/addJob")//添加任务
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo addJob(
@RequestParam("jobname") String jobname,
@RequestParam("groupid") Integer groupid,
HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
int flag=0;
if (systemUser.getRole()==0)
flag=jobService.addJob(jobname,groupid);
else
flag=jobService.addJob(jobname,systemUser.getId());
if (flag>0)
return new ResultInfo(true,null,"添加成功",null);
else
return new ResultInfo(false,null,"添加失败",null);
}
@ResponseBody
@PostMapping("/admin/finishJob")//添加任务
@PreAuthorize("hasRole('ROLE_GROUP') or hasRole('ROLE_ADMIN')")
public ResultInfo finishJob(
@RequestParam("jobid") Integer jobid,
HttpSession session){
SystemUser systemUser= (SystemUser) session.getAttribute("user");
int flag=0;
if (systemUser.getRole()==0)
flag=jobService.finishjob(jobid,null);
else
flag=jobService.finishjob(jobid,systemUser.getId());
if (flag>0)
return new ResultInfo(true,null,"设置任务状态成功",null);
else
return new ResultInfo(false,null,"设置任务状态失败",null);
}
@ResponseBody
@PostMapping("/admin/getResult")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResultInfo getResult(@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize,
@RequestParam(value="tubeid",required=false) String tubeid,
@RequestParam(value="idcardnum",required=false) String idcardnum,
@RequestParam(value="status",required=false) Integer status,
@RequestParam(value="operatorid",required=false) Integer operatorid,
@RequestParam(value="jobid",required=false) Integer jobid,
@RequestParam(value="groupid",required=false) Integer groupid,
@RequestParam(value="time1",required=false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date time1,
@RequestParam(value="time2",required=false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Date time2
){
if ("".equals(idcardnum))
idcardnum=null;
if ("".equals(tubeid))
tubeid=null;
return new ResultInfo(true,200,"success",
resultService.getAllResult(pageNum,pageSize,idcardnum,tubeid,status,operatorid
,jobid,groupid,time1,time2));
}
@ResponseBody
@PostMapping("/admi