package com.newfiber.api.pc.controller.Assessment; import com.baomidou.mybatisplus.plugins.Page; import com.newfiber.api.core.bean.ReqBodyObj; import com.newfiber.api.core.bean.RespBodyObj; import com.newfiber.api.core.utils.DateUtil; import com.newfiber.api.pc.dao.Assessment.AssessmentDao; import com.newfiber.api.pc.dao.Assessment.AssessmentItemDao; import com.newfiber.api.pc.dao.Assessment.AssessmentSubItemDao; import com.newfiber.api.pc.dao.RiverManage.RiverChiefDao; import com.newfiber.api.pc.dao.RiverManage.RiverInfoBasisDao; import com.newfiber.api.pc.dao.RiverManage.RiverPatrolDao; import com.newfiber.api.pc.model.UserManager.Data_User_Info; import com.newfiber.api.pc.model.Assessment.Assessment; import com.newfiber.api.pc.model.Assessment.AssessmentItem; import com.newfiber.api.pc.model.Assessment.AssessmentSubItem; import com.newfiber.api.pc.service.RestTemplateService; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @Controller public class AssessmentController { @Autowired private AssessmentDao assessmentDao; @Autowired private AssessmentItemDao assessmentItemDao; @Autowired private AssessmentSubItemDao assessmentSubItemDao; @Autowired private RiverChiefDao riverChiefDao; @Autowired private RiverInfoBasisDao riverInfoBasisDao; @Resource private RestTemplateService restTemplateService; /** * 考核自评--查询(分页) * * @param param(fuzzyQuery,startTime,endTime,assessment * @param request * @return */ @PostMapping(value = "assessment/getMyAssessmentList", produces = "application/json;charset=UTF-8") @ResponseBody public RespBodyObj getMyAssessmentList(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest request) { Map<String, String> map1 = param.getData(); String fuzzyQuery = (String) map1.get("fuzzyQuery"); String userNo = request.getHeader("userNo"); Integer page = Integer.valueOf(map1.get("current")); Integer rows = Integer.valueOf(map1.get("size")); String year = map1.get("year"); String quarter = map1.get("quarter"); String month = map1.get("month"); List<Assessment> list = new ArrayList<>(); Page page1 = new Page(); Assessment assessment = new Assessment(); try { Map<String,Date> dataMap = DateUtil.getBeginAndEndTime(year,quarter,month); if (dataMap.get("st") != null) { assessment.setStartTime(dataMap.get("st")); } if (dataMap.get("et") != null) { assessment.setEndTime(dataMap.get("et")); } if (userNo == null) { userNo = request.getHeader("userNo"); } Integer pageNo = 0; Integer pageSize = 0; if (null != page && page != 0) { pageSize = Integer.valueOf(rows); pageNo = (Integer.valueOf(page) - 1) * pageSize; } else { pageNo = null; pageSize = null; } assessment.setPageNo(pageNo); assessment.setPageSize(pageSize); assessment.setFuzzyQuery(fuzzyQuery); assessment.setAssessmentUserNo(userNo); list = assessmentDao.getAssessmentList(assessment); int total = assessmentDao.countAssessmentList(assessment); page1.setRecords(list); page1.setTotal(total); return RespBodyObj.ok(page1); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } /** * 查看考核详情 * * @param param(serial) * @return */ @PostMapping(value = "assessment/getAssessmentDetail", produces = "application/json;charset=UTF-8") @ResponseBody // @LogOne(descriptionType="6",description = "查看考核详情") public RespBodyObj getAssessmentDetail(@RequestBody ReqBodyObj<Map<String, Long>> param) { try { Assessment newassessment = assessmentDao.getAssessment(param.getData().get("serial")); return RespBodyObj.ok(newassessment); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } //考核自评--自评 @PostMapping(value = "assessment/selfAssess", produces = "application/json;charset=UTF-8") @ResponseBody public RespBodyObj selfAssess(@RequestBody ReqBodyObj<Map<String,Object>> param) { Map<String,Object> map = param.getData(); Long serial = Long.valueOf(String.valueOf(map.get("serial"))); List<String> itemNos = (List<String>)map.get("itemNo"); String [] itemNo = new String[itemNos.size()]; itemNos.toArray(itemNo); List<String> subItemNos = (List<String>)map.get("subItemNo"); String [] subItemNo = new String[subItemNos.size()]; subItemNos.toArray(subItemNo); List<String> itemScores = (List<String>)map.get("itemScore"); String [] itemScore = new String[itemScores.size()]; itemScores.toArray(itemScore); List<String> subItemScores = (List<String>)map.get("subItemScore"); String [] subItemScore = new String[subItemScores.size()]; subItemScores.toArray(subItemScore); try { Double sum = 0.00; for (int i = 0; i < itemNo.length; i++) { AssessmentItem ai = new AssessmentItem(); ai.setItemNo(itemNo[i]); ai.setSelfAssessment(new BigDecimal(itemScore[i])); assessmentItemDao.updateAssessmentItem(ai); sum += Double.valueOf(itemScore[i]); } for (int i = 0; i < subItemNo.length; i++) { AssessmentSubItem asi = new AssessmentSubItem(); asi.setSubItemNo(subItemNo[i]); asi.setSelfAssessment(new BigDecimal(subItemScore[i])); assessmentSubItemDao.updateAssessmentSubItem(asi); sum += Double.valueOf(subItemScore[i]); } Assessment assessment = assessmentDao.getAssessment(serial); Double totalScore = sum * assessment.getProportion().doubleValue() + assessment.getLeaderTotal().doubleValue() * (1 - assessment.getProportion().doubleValue()); assessment.setTotalScore(BigDecimal.valueOf(totalScore)); assessment.setSelfTotal(BigDecimal.valueOf(sum)); Double excellentScore = assessment.getExcellentScore().doubleValue(); Double goodScore = assessment.getGoodScore().doubleValue(); Double qualifiedScore = assessment.getQualifiedScore().doubleValue(); if (totalScore < qualifiedScore) { assessment.setAssessmentResult("不合格"); } else if (totalScore >= qualifiedScore && totalScore < goodScore) { assessment.setAssessmentResult("合格"); } else if (totalScore >= goodScore && totalScore < excellentScore) { assessment.setAssessmentResult("良好"); } else { assessment.setAssessmentResult("优秀"); } if (assessment.getAssessmentStatus() == 0) { assessment.setAssessmentStatus(1); assessment.setAssessmentStatusZN("已自评未打分"); } else if (assessment.getAssessmentStatus() == 2) { assessment.setAssessmentStatus(3); assessment.setAssessmentStatusZN("已自评已打分"); } assessmentDao.updateAssessment(assessment); return RespBodyObj.ok("自评成功"); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } //领导打分--查询下级考核 @PostMapping(value = "assessment/getMySubAssessmentList", produces = "application/json;charset=UTF-8") @ResponseBody // @LogOne(descriptionType="6",description = "领导打分--查询下级考核") public RespBodyObj getMySubAssessmentList(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest requeste) { Map<String, String> map1 = param.getData(); String templateNo = (String) map1.get("templateNo"); String userNo = (String) map1.get("userNo"); Integer page = Integer.valueOf(map1.get("current")); Integer rows = Integer.valueOf(map1.get("size")); String year = map1.get("year"); String quarter = map1.get("quarter"); String month = map1.get("month"); List<Assessment> alist = new ArrayList<>(); Page page1 = new Page(); try { Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); Date t1 = null; Date t2 = null; if (dateMap.get("st") != null) { t1 = dateMap.get("st"); } if (dateMap.get("et") != null) { t2 = dateMap.get("et"); } Integer pageNo = 0; Integer pageSize = 0; if (null != page && page != 0) { pageSize = Integer.valueOf(rows); pageNo = (Integer.valueOf(page) - 1) * pageSize; } else { pageNo = null; pageSize = null; } if (userNo == null) { userNo = requeste.getHeader("userNo"); } List<String> list = riverChiefDao.getSubRiverChief(userNo); Data_User_Info user = restTemplateService.getUserInfo(userNo); //如果是总河长,则对最高级别河流进行考核 if(user.getHighestAuthority()!= null && user.getHighestAuthority().equals("yes")){ List<String> hUsrer = riverInfoBasisDao.getHighestRiverChief(); list.addAll(hUsrer); } if(list == null || list.size()==0){ return RespBodyObj.ok(page1); } alist = assessmentDao.getSubAssessmentList(list, pageNo, pageSize, t1, t2, templateNo); int total = assessmentDao.getSubAssessmentList(list, 0, 0, t1, t2, templateNo).size(); page1.setRecords(alist); page1.setTotal(total); return RespBodyObj.ok(page1); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } //上级领导评分 @PostMapping(value = "assessment/getMyLeaderAssessmentList", produces = "application/json;charset=UTF-8") @ResponseBody // @LogOne(descriptionType="6",description = "领导打分--查询下级考核") public RespBodyObj getMyLeaderAssessmentList(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest requeste) { Map<String, String> map1 = param.getData(); String templateNo = (String) map1.get("templateNo"); String userNo = (String) map1.get("userNo"); Integer page = Integer.valueOf(map1.get("current")); Integer rows = Integer.valueOf(map1.get("size")); String year = map1.get("year"); String quarter = map1.get("quarter"); String month = map1.get("month"); List<Assessment> alist = new ArrayList<>(); Page page1 = new Page(); try { Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); Date t1 = null; Date t2 = null; if (dateMap.get("st") != null) { t1 = dateMap.get("st"); } if (dateMap.get("et") != null) { t2 = dateMap.get("et"); } Integer pageNo = 0; Integer pageSize = 0; if (null != page && page != 0) { pageSize = Integer.valueOf(rows); pageNo = (Integer.valueOf(page) - 1) * pageSize; } else { pageNo = null; pageSize = null; } if (userNo == null) { userNo = requeste.getHeader("userNo"); } List<String> list = new ArrayList<>(); list.add(userNo); alist = assessmentDao.getSubAssessmentList(list, pageNo, pageSize, t1, t2, templateNo); int total = assessmentDao.getSubAssessmentList(list, 0, 0, t1, t2, templateNo).size(); page1.setRecords(alist); page1.setTotal(total); return RespBodyObj.ok(page1); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } //领导打分--打分 @PostMapping(value = "assessment/leaderGrade", produces = "application/json;charset=UTF-8") @ResponseBody // @LogOne(descriptionType="3",description = "领导打分--打分") public RespBodyObj leaderGrade(@RequestBody ReqBodyObj<Map<String,Object>> param) { Map<String,Object> map = param.getData(); Long serial = Long.valueOf(String.valueOf(map.get("serial"))); List<String> itemNos = (List<String>)map.get("itemNo"); String [] itemNo = new String[itemNos.size()]; itemNos.toArray(itemNo); List<String> subItemNos = (List<String>)map.get("subItemNo"); String [] subItemNo = new String[subItemNos.size()]; subItemNos.toArray(subItemNo); List<String> itemScores = (List<String>)map.get("itemScore"); String [] itemScore = new String[itemScores.size()]; itemScores.toArray(itemScore); List<String> subItemScores = (List<String>)map.get("subItemScore"); String [] subItemScore = new String[subItemScores.size()]; subItemScores.toArray(subItemScore); try { Double sum = 0.00; for (int i = 0; i < itemNo.length; i++) { AssessmentItem ai = new AssessmentItem(); ai.setItemNo(itemNo[i]); ai.setLeaderGrade(new BigDecimal(itemScore[i])); assessmentItemDao.updateAssessmentItem(ai); sum += Double.valueOf(itemScore[i]); } for (int i = 0; i < subItemNo.length; i++) { AssessmentSubItem asi = new AssessmentSubItem(); asi.setSubItemNo(subItemNo[i]); asi.setLeaderGrade(new BigDecimal(subItemScore[i])); assessmentSubItemDao.updateAssessmentSubItem(asi); sum += Double.valueOf(subItemScore[i]); } Assessment assessment = assessmentDao.getAssessment(serial); Double totalScore = assessment.getSelfTotal().doubleValue() * assessment.getProportion().doubleValue() + sum * (1 - assessment.getProportion().doubleValue()); assessment.setTotalScore(BigDecimal.valueOf(totalScore)); assessment.setLeaderTotal(BigDecimal.valueOf(sum)); //修改领导打分 Double excellentScore = assessment.getExcellentScore().doubleValue(); Double goodScore = assessment.getGoodScore().doubleValue(); Double qualifiedScore = assessment.getQualifiedScore().doubleValue(); if (totalScore < qualifiedScore) { assessment.setAssessmentResult("不合格"); } else if (totalScore >= qualifiedScore && totalScore < goodScore) { assessment.setAssessmentResult("合格"); } else if (totalScore >= goodScore && totalScore < excellentScore) { assessment.setAssessmentResult("良好"); } else { assessment.setAssessmentResult("优秀"); } if (assessment.getAssessmentStatus() == 0) { assessment.setAssessmentStatus(2); assessment.setAssessmentStatusZN("未自评已打分"); } else if (assessment.getAssessmentStatus() == 1) { assessment.setAssessmentStatus(3); assessment.setAssessmentStatusZN("已自评已打分"); } assessmentDao.updateAssessment(assessment); return RespBodyObj.ok("打分成功"); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.error(); } } //查询我的排名 @PostMapping(value = "assessment/getMyRanking", produces = "application/json;charset=UTF-8") @ResponseBody // @LogOne(descriptionType="6",description = "查询我的排名") public RespBodyObj getMyRanking(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest request) { String userNo = request.getHeader("userNo"); Integer page = Integer.valueOf(param.getData().get("current")); Integer rows = Integer.valueOf(param.getData().get("size")); String fuzzyQuery = (String) param.getData().get("fuzzyQuery"); String year = param.getData().get("year"); String quarter = param.getData().get("quarter"); String month = param.getData().get("month"); Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Assessment assessment = new Assessment(); //设置时间 assessment.setStartTime(dateMap.get("st")); assessment.setEndTime(dateMap.get("et")); List<Assessment> result = new ArrayList<>(); Page page1 = new Page(); try { if (userNo == null) { userNo = request.getHeader("userNo"); } assessment.setAssessmentUserNo(userNo); List<String> temlist = assessmentDao.getMyAllTemplateNo(assessment); if(temlist == null || temlist.size() == 0 ) return RespBodyObj.ok(page1); List<Assessment> ranklist = assessmentDao.getMyRanking(userNo, temlist, 0, 0); int total = ranklist.size(); //做分页效果 List<Assessment> list = new ArrayList<>(); int pageSize = rows; int startRow = (page - 1) * pageSize; page1.setTotal(total); page1.setRecords(ranklist.subList(startRow, (startRow + pageSize)<ranklist.size()?(startRow + pageSize):ranklist.size())); return RespBodyObj.ok(page1); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.ok(page1); } } //查询下级的考核模板编号集合 @PostMapping(value = "assessment/getMySubTemplateNo", produces = "application/json;charset=UTF-8") @ResponseBody public RespBodyObj getMySubTemplateNo(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest request) { Map<String, String> map = param.getData(); String userNo = request.getHeader("userNo"); String year = map.get("year"); String quarter = map.get("quarter"); String month = map.get("month"); Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); List<Assessment> list = new ArrayList<>(); //若不传时间,则查询当前月的排名 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date startTime = dateMap.get("st"),endTime = dateMap.get("et"); try { if (userNo == null) { userNo = request.getHeader("userNo"); } List<String> ulist = riverChiefDao.getSubRiverChief(userNo); Data_User_Info user = restTemplateService.getUserInfo(userNo); //如果是总河长,则对最高级别河流进行考核 if(user.getHighestAuthority()!= null && user.getHighestAuthority().equals("yes")){ List<String> hUsrer = riverInfoBasisDao.getHighestRiverChief(); ulist.addAll(hUsrer); } if(ulist == null ||ulist.size()==0) return RespBodyObj.ok(list); list = assessmentDao.getMySubTemplateNo(ulist, startTime, endTime); return RespBodyObj.ok(list); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.ok(list); } } //查询我的的考核模板编号集合 @PostMapping(value = "assessment/getMyTemplateNo", produces = "application/json;charset=UTF-8") @ResponseBody public RespBodyObj getMyTemplateNo(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest request) { Map<String, String> map = param.getData(); String userNo = request.getHeader("userNo"); String year = map.get("year"); String quarter = map.get("quarter"); String month = map.get("month"); Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); List<Assessment> list = new ArrayList<>(); //若不传时间,则查询当前月的排名 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date startTime = dateMap.get("st"),endTime = dateMap.get("et"); try { if (userNo == null) { userNo = request.getHeader("userNo"); } List<String> ulist = new ArrayList<>(); ulist.add(userNo); list = assessmentDao.getMySubTemplateNo(ulist, startTime, endTime); return RespBodyObj.ok(list); } catch (Exception e) { e.printStackTrace(); return RespBodyObj.ok(list); } } //查询我的下级排名 @PostMapping(value = "assessment/getMySubRanking", produces = "application/json;charset=UTF-8") @ResponseBody public RespBodyObj getMySubRanking(@RequestBody ReqBodyObj<Map<String, String>> param, HttpServletRequest request) { String userNo = request.getHeader("userNo"); Integer page = Integer.valueOf(param.getData().get("current")); Integer rows = Integer.valueOf(param.getData().get("size")); String templateNo = param.getData().get("templateNo"); String year = param.getData().get("year"); String quarter = param.getData().get("quarter"); String month = param.getData().get("month"); Map<String,Date> dateMap = DateUtil.getBeginAndEndTime(year,quarter,month); List<Assessment> result = new ArrayList<>(); Page page1 = new Page(); try { Integer pageNo = 0; Integer pageSize = 0; if (null != page && page != 0) { pageSize = Integer.valueOf(rows); pageNo = (Integer.valueOf(page) - 1) * pageSize; } else { pageNo = null; pageSize = null; } if (userNo == null) { userNo = request.getHeader("userNo"); } List<String> ulist = riverChiefDao.getSubRiverChief(userNo); Data_User_Info user = restTemplateService.getUserInfo(userNo); //如果是总河长,则对最高级别河流进行考核 if(user.getHighestAuthority()!= null && user.getHighestAuthority().equals("yes")){ List<String> hUsrer = riverInfoBasisDao.getHighestRiverChief(); ulist.addAll(hUsrer); } List<String> tempNoList = new ArrayList<>(); if(templateNo != ""){ tempNoList.add(templateNo); }else if(ulist.size()>0){ List<Assessment> list = assessmentDao.getMySubTemplateNo(ulist, dateMap.get("st"), dateMap.get("et")); tempNoList = list.stream().map(it -> it.getTemplateNo()).distinct().collect(Collectors.toList()); } if (null != ulist && ulist.size() > 0 && tempNoList.size()>0) { result = assessmentDao.getSubRanking(ulist, tempNoList, null, null); int total = result.size(); page1.setRecords(result.subList(pageNo, (pageNo + pageSize)<result.size()?(pageNo + pageSize):result.size())); page1.setTotal(total); return RespBodyObj.ok(page1); } else { return RespBodyObj.ok(page1); } } catch (Exception e) { e.printStackTrace(); return RespBodyObj.ok(page1); } } }