package cn.com.goldenwater.dcproj.service.impl.tac; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.TacEvaluationGroupLeaderDao; import cn.com.goldenwater.dcproj.dao.TacInspYearBatchGroupPersDao; import cn.com.goldenwater.dcproj.dao.TacPawpRgstrDao; import cn.com.goldenwater.dcproj.model.TacEvaluationGroupLeader; import cn.com.goldenwater.dcproj.model.TacInspYearBatchGroupPers; import cn.com.goldenwater.dcproj.model.TacPawpRgstr; import cn.com.goldenwater.dcproj.param.TacEvaluationGroupLeaderParam; import cn.com.goldenwater.dcproj.param.TacInspYearBatchGroupPersParam; import cn.com.goldenwater.dcproj.param.TacPawpRgstrParam; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.service.TacEvaluationGroupLeaderService; import cn.com.goldenwater.dcproj.utils.StringUtils; import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil; import cn.com.goldenwater.dcproj.vo.TacEvaluationGroupLeaderVo; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 专家组长测评Service业务层处理 * * @author ruoyi * @date 2023-03-06 */ @Service @Transactional public class TacEvaluationGroupLeaderServiceImpl extends AbstractCrudService implements TacEvaluationGroupLeaderService { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private TacEvaluationGroupLeaderDao tacEvaluationGroupLeaderDao; /** * 机构 区域 服务 */ @Autowired private OlBisInspOrgService olBisInspOrgService; @Autowired private TacPawpRgstrDao pawpRgstrDao; @Autowired private TacInspYearBatchGroupPersDao tacInspYearBatchGroupPersDao; public TacEvaluationGroupLeaderServiceImpl(TacEvaluationGroupLeaderDao tacEvaluationGroupLeaderDao) { super(tacEvaluationGroupLeaderDao); this.tacEvaluationGroupLeaderDao = tacEvaluationGroupLeaderDao; } /** * 增加专家组长测评 * * @return 专家组长测评 */ @Override public int insert(TacEvaluationGroupLeader tacEvaluationGroupLeader) { logger.debug("TacEvaluationGroupLeader 新增"); // 给专家组长 打分 先判定 是否所有专家都提交了阶段成果 // 获取到专家底稿信息 TacPawpRgstrParam pawpRgstrParam = new TacPawpRgstrParam(); pawpRgstrParam.setGroupId(tacEvaluationGroupLeader.getGroupId()); pawpRgstrParam.setObjId(tacEvaluationGroupLeader.getProjId()); pawpRgstrParam.setProvince(olBisInspOrgService.getProvince(tacEvaluationGroupLeader.getOrgId())); List pawpRgstrList= pawpRgstrDao.findList(pawpRgstrParam); if(null == pawpRgstrList || 1 != pawpRgstrList.size()){ throw new CheckException("没有专家底稿,不能打分"); } // 获取到 该组 项目 下的专家列表 TacInspYearBatchGroupPersParam batchGroupPersParam = new TacInspYearBatchGroupPersParam(); batchGroupPersParam.setGroupId(tacEvaluationGroupLeader.getGroupId()); List groupPersList = this.tacInspYearBatchGroupPersDao.findList(batchGroupPersParam); if(null == groupPersList || 0 == groupPersList.size()){ throw new CheckException("专家未提交问题,不能打分"); } TacPawpRgstr pawpRgstr = pawpRgstrList.get(0); // 判定该组有没有配置 专业专家 List roleTypeList = Arrays.asList(new String[]{"11","12","13","14","15","16"}); List expertList = groupPersList.stream().filter(f -> roleTypeList.contains(f.getRoleType())).collect(Collectors.toList()); if(null == expertList || 0== expertList.size()){ if( StringUtils.isBlank(pawpRgstr.getPdbstStat()) || 4 > Integer.parseInt(pawpRgstr.getPdbstStat())){ throw new CheckException("前期专家未提交问题,不能打分"); } if(StringUtils.isBlank(pawpRgstr.getBstocmTsopbfpStat()) || 4 > Integer.parseInt(pawpRgstr.getBstocmTsopbfpStat())){ throw new CheckException("建管专家未提交问题,不能打分"); } if(StringUtils.isBlank(pawpRgstr.getRaiobisStat()) || 4 > Integer.parseInt(pawpRgstr.getRaiobisStat())){ throw new CheckException("计划专家未提交问题,不能打分"); } if(StringUtils.isBlank(pawpRgstr.getBstocmCmsStat()) || 4 > Integer.parseInt(pawpRgstr.getBstocmCmsStat())){ throw new CheckException("财务专家未提交问题,不能打分"); } if(StringUtils.isBlank(pawpRgstr.getBitopqPeqaaStat()) || 4 > Integer.parseInt(pawpRgstr.getBitopqPeqaaStat())){ throw new CheckException("质量专家未提交问题,不能打分"); } if(StringUtils.isBlank(pawpRgstr.getBioesRwunitStat()) || 4 > Integer.parseInt(pawpRgstr.getBioesRwunitStat())){ throw new CheckException("安全专家未提交问题,不能打分"); } }else{ for(TacInspYearBatchGroupPers groupPers: groupPersList){ if("11".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getPdbstStat()) || 4 > Integer.parseInt(pawpRgstr.getPdbstStat()))){ throw new CheckException("前期专家未提交问题,不能打分"); } if("12".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getBstocmTsopbfpStat()) || 4 > Integer.parseInt(pawpRgstr.getBstocmTsopbfpStat()))){ throw new CheckException("建管专家未提交问题,不能打分"); } if("13".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getRaiobisStat()) || 4 > Integer.parseInt(pawpRgstr.getRaiobisStat()))){ throw new CheckException("计划专家未提交问题,不能打分"); } if("14".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getBstocmCmsStat()) || 4 > Integer.parseInt(pawpRgstr.getBstocmCmsStat()))){ throw new CheckException("财务专家未提交问题,不能打分"); } if("15".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getBitopqPeqaaStat()) || 4 > Integer.parseInt(pawpRgstr.getBitopqPeqaaStat()))){ throw new CheckException("质量专家未提交问题,不能打分"); } if("16".equals(groupPers.getRoleType()) && (StringUtils.isBlank(pawpRgstr.getBioesRwunitStat()) || 4 > Integer.parseInt(pawpRgstr.getBioesRwunitStat()))){ throw new CheckException("安全专家未提交问题,不能打分"); } } } String uuid = UuidUtil.uuid(); // 生成uuid tacEvaluationGroupLeader.setId(uuid); tacEvaluationGroupLeader.setIntm(new Date()); tacEvaluationGroupLeader.setUptm(new Date()); return this.tacEvaluationGroupLeaderDao.insert(tacEvaluationGroupLeader); } /** * 更新 专家组长测评 * 主键更新 * @param tacEvaluationGroupLeader 专家组长测评 * @return 专家组长测评 */ @Override public int update(TacEvaluationGroupLeader tacEvaluationGroupLeader) { logger.debug("TacEvaluationGroupLeader 更新"); tacEvaluationGroupLeader.setUptm(new Date()); return this.tacEvaluationGroupLeaderDao.update(tacEvaluationGroupLeader); } /** * 主键删除 专家组长测评 * * @param id 专家组长测评主键 * @return 专家组长测评 */ @Override public int delete(String id) { logger.debug("TacEvaluationGroupLeader 删除"); return this.tacEvaluationGroupLeaderDao.delete(id); } /** * 导出 专家组长测评 * * @param tacEvaluationGroupLeaderParam 筛选查询参数 * @param response */ @Override public void export(TacEvaluationGroupLeaderParam tacEvaluationGroupLeaderParam, HttpServletResponse response) { logger.debug("TacEvaluationGroupLeader 导出"); List tacEvaluationGroupLeaderList = findList(tacEvaluationGroupLeaderParam); List columns = new ArrayList() {{ add("id"); add("orgId"); add("adCode"); add("groupId"); add("projId"); add("groupLeaderId"); add("groupLeaderName"); add("orgLeader"); add("businessLevel"); add("cphsManage"); add("workStyle"); add("oneVeto"); add("score"); add("evalLevel"); add("note"); add("persId"); add("intm"); add("uptm"); }}; ExportUtil.exportExcel2(tacEvaluationGroupLeaderList, response, "专家组长测评列表", columns, TacEvaluationGroupLeader.class); } /** * 批量添加 * @param tacEvaluationGroupLeaderList * @return */ @Override public int insertBatchFile(List tacEvaluationGroupLeaderList){ return this.tacEvaluationGroupLeaderDao.insertBatchFile(tacEvaluationGroupLeaderList); } /** * 待测评的 专家组长列表 * @return */ @Override public List selectEavlPersListByGroupId(TacEvaluationGroupLeaderParam groupLeaderParam){ return this.tacEvaluationGroupLeaderDao.selectEavlPersListByGroupId(groupLeaderParam); } /** * 专家组长 测评结果 * @return */ @Override public PageInfo findEvaluationResult(TacEvaluationGroupLeaderParam groupLeaderParam){ PageHelper.startPage(groupLeaderParam); List list = this.tacEvaluationGroupLeaderDao.findEvaluationResult2(groupLeaderParam); PageInfo pageInfo = new PageInfo(list); return pageInfo ; } /** * 专家组长 测评结果明细 * 按 专家 按项目 * @return */ @Override public PageInfo findEvaluationResultDetails(TacEvaluationGroupLeaderParam groupLeaderParam){ PageHelper.startPage(groupLeaderParam); List list = this.tacEvaluationGroupLeaderDao.findEvaluationResultDetails(groupLeaderParam); PageInfo pageInfo = new PageInfo(list); return pageInfo ; } /** * 修改评分 * @param groupLeaderParam * @return */ @Override public int updateScoreById(TacEvaluationGroupLeader groupLeaderParam){ return this.tacEvaluationGroupLeaderDao.updateScoreById(groupLeaderParam); } /** * 恢复评分 * @param id * @return */ @Override public int revertScoreById(String id){ TacEvaluationGroupLeader groupLeader = this.tacEvaluationGroupLeaderDao.get(id); if(null != groupLeader ){ String backup = groupLeader.getBackUp(); if(StringUtils.isNotBlank(backup)){ String[] strs = backup.split(","); TacEvaluationGroupLeader groupLeaderParam = new TacEvaluationGroupLeaderParam(); groupLeaderParam.setId(id); groupLeaderParam.setOrgLeader(Double.parseDouble(strs[0])); groupLeaderParam.setBusinessLevel(Double.parseDouble(strs[1])); groupLeaderParam.setCphsManage(Double.parseDouble(strs[2])); groupLeaderParam.setWorkStyle(Double.parseDouble(strs[3])); groupLeaderParam.setScore(Double.parseDouble(strs[4])); groupLeaderParam.setEvalLevel(strs[5]); if(strs.length==7){ groupLeaderParam.setNote(strs[6]); } return this.tacEvaluationGroupLeaderDao.revertScoreById(groupLeaderParam); } } return 0; } @Override public TacEvaluationGroupLeader selectOneDetailByProjIdAndGroupLeaderId(String projId,String groupLeaderId){ return this.tacEvaluationGroupLeaderDao.selectOneDetailByProjIdAndGroupLeaderId(projId,groupLeaderId); } @Override public TacEvaluationGroupLeader selectHjScoreByProjIdAndGroupLeaderId(String projId,String groupLeaderId){ return this.tacEvaluationGroupLeaderDao.selectHjScoreByProjIdAndGroupLeaderId(projId,groupLeaderId); } @Override public int insertHjScoreByProjIdAndExpertId(TacEvaluationGroupLeader vo){ return this.tacEvaluationGroupLeaderDao.insert(vo); } @Override public List findEvaluationResultDetails2(String groupLeaderId,String projId){ return this.tacEvaluationGroupLeaderDao.findEvaluationResultDetails2(groupLeaderId,projId); } }