package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Constants.ProjectRecord; import com.doumee.core.utils.Constants.UserType; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.bs.*; import com.doumee.dao.business.vo.bs.ServiceCompanyStatisticsVO; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.dto.ExpertReportDTO; import com.doumee.dao.system.dto.MultiFileDTO; import com.doumee.dao.system.model.SystemRoleMenu; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.vo.CompanyDeclaresVo; import com.doumee.service.business.*; import com.doumee.service.system.SystemUserService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; /** * 企业项目报名信息表Service实现 * * @author 江蹄蹄 * @date 2023/02/15 08:55 */ @Service public class DeclaresServiceImpl implements DeclaresService { @Autowired private DeclaresMapper declaresMapper; @Autowired private ProjectMapper projectMapper; @Lazy @Autowired private MultifileService multifileService; @Autowired private DeclareAnswerService declareAnswerService; @Autowired private DeclaresJoinMapper declaresJoinMapper; @Autowired private AreasService areasService; @Autowired private DeclareHistoryMapper declareHistoryMapper; @Autowired private DeclareAnswerMapper declareAnswerMapper; @Autowired DeclareJoinMapper declareJoinMapper; @Autowired DeclareServiceJoinMapper declareServiceJoinMapper; @Autowired ProjectLabelMapper projectLabelMapper; @Autowired CompanyMapper companyMapper; @Lazy @Autowired private ProjectService projectService; @Autowired DeclareExpertMapper declareExpertMapper; @Autowired @Lazy DeclareScoreService declareScoreService; @Autowired ProjectScoreMapper projectScoreMapper; @Autowired DeclareScoreMapper declareScoreMapper; @Autowired DeclareExpertJoinMapper declareExpertJoinMapper; @Autowired MultifileMapper multifileMapper; @Autowired SystemUserService systemUserService; @Autowired private ProjectSoService projectSoService; @Autowired private DeclareHistoryService declareHistoryService; @Autowired private SystemUserMapper systemUserMapper; @Autowired private CompanyService companyService; @Autowired private DeclareExpertService declareExpertService; @Autowired private ProjectRatioMapper projectRatioMapper; @Autowired private DeclareServiceMapper declareServiceMapper; @Autowired private CompanyEconomicsService companyEconomicsService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override @Transactional(rollbackFor = {BusinessException.class, Exception.class}) public Integer create(Declares declares) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(UserType.COMPANY.getKey() != Constants.formatIntegerNum(user.getType())){ //只有企业才能进行该操作 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,只有企业才能进行该操作!"); } if((Constants.equalsInteger(declares.getStatus(),Constants.ONE)) && (StringUtils.isBlank(declares.getLinkname()) ||StringUtils.isBlank(declares.getLinkphone()))){ //项目如果有问卷信息,则必须填写问卷 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按要求填写申报信息!"); } //项目信息 Project project = declares.getProjectId() == null ? null : projectService.findById(declares.getProjectId()); if(!(Objects.nonNull(project) && Constants.formatIntegerNum(project.getStatus()) == Constants.ONE)){ //项目不存在或者项目状态不是进行 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "项目信息异常,不支持报名"); } //报名信息(是否存在报名信息) Declares querydec = findByProjectAndCom(project.getId(),user.getCompanyId()); //数据有效性校验 isCreateParamValid(querydec,declares,project,user); //处理主表申报记录并生成操作历史数据 dealRecordAndHistory(declares,querydec, user,project) ; //处理附件数据 dealBatchMultiFiles(declares,querydec); //更新答题记录关联申报记录 updateAnswerRecord(declares,user.getId()); return declares.getId(); } @Override public Integer updateDiagnoseType(Declares declares) { if(declares.getId() == null || declares.getDiagnoseTypeId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(UserType.SD_ADMIN.getKey() != Constants.formatIntegerNum(user.getType()) && UserType.SD_CHILD.getKey() != Constants.formatIntegerNum(user.getType())){ //只有企业才能进行该操作 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,只有综合服务单位才能进行该操作!"); } Declares model = declareJoinMapper.selectById(declares.getId()); if(model ==null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "报名信息不存在!"); } ProjectLabel pd = new ProjectLabel(); pd.setProjectId(model.getProjectId()); pd.setIsdeleted(Constants.ZERO); pd.setId(declares.getDiagnoseTypeId()); pd = projectLabelMapper.selectOne(new QueryWrapper<>(pd).last("limit 1")); if(pd == null){ //只有企业才能进行该操作 throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "项目诊断类型信息不存在"); } model = new Declares(); model.setId(declares.getId()); model.setDiagnoseTypeId(declares.getDiagnoseTypeId()); model.setEditor(user.getId()); model.setEditDate(new Date()); declaresMapper.updateById(model); return declares.getId(); } /** * 处理主表申报记录和操作历史数据 * @param declares * @param querydec * @param user * @param project */ private void dealRecordAndHistory(Declares declares,Declares querydec, LoginUserInfo user,Project project) { DeclareHistory declareHistory= new DeclareHistory(); // declareHistory.setStatus(querydec==null?null:querydec.getStatus()); Date date =new Date(); declareHistory.setCheckor(user.getId()); declareHistory.setCreator(user.getId()); declareHistory.setCheckDate(date); declareHistory.setCreateDate(date); declareHistory.setIsdeleted(Constants.ZERO); String hisContent; if (declares.getStatus() == Constants.ONE) { //如果是提交操作 if (project.getAreaCheck() == Constants.ZERO) { //经过县区审核 declareHistory.setStatus(Constants.DeclareStatus.CHECK_WAIT.getKey()); } else { //不经过县区审核 declareHistory.setStatus(Constants.DeclareStatus.CHECK_PASS.getKey()); } //历史为提交记录 declareHistory.setType(ProjectRecord.COM_SUBMIT.getKey()); hisContent = ProjectRecord.COM_SUBMIT.getNoteinfo(); } else { //如果是保存操作 declareHistory.setType(ProjectRecord.COM_EDITING.getKey()); declareHistory.setStatus(Constants.DeclareStatus.EDITING.getKey()); //历史为保存记录 hisContent = ProjectRecord.COM_EDITING.getNoteinfo(); } declareHistory.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType())) .replace("${param3}",StringUtils.defaultString(user.getUsername(),"")) .replace("${param4}",Constants.DeclareStatus.getNoteinfo(declareHistory.getStatus()))); declares.setCheckDate(declareHistory.getCheckDate()); declares.setCheckInfo(declareHistory.getCheckInfo()); declares.setCheckType(declareHistory.getType()); declares.setStatus(declareHistory.getStatus()); if (querydec != null) { //如果不是第一次操作,更新主表数据 declares.setEditor(user.getId()); declares.setEditDate(date); declares.setId(querydec.getId()); declaresMapper.updateById(declares); }else { //如果是第一次操作 declares.setIsdeleted(Constants.ZERO); declares.setCreateDate(date); declares.setCreator(user.getId()); declares.setCompanyId(user.getCompanyId()); declaresMapper.insert(declares); } //插入历史记录 if (declares.getStatus() == Constants.ZERO) { //保存做更新操作 DeclareHistory queryhis= new DeclareHistory(); queryhis.setIsdeleted(Constants.ZERO); queryhis.setDeclareId(declares.getId()); queryhis.setStatus(declareHistory.getStatus()); DeclareHistory hisResult= declareHistoryMapper.selectOne(new QueryWrapper<>(queryhis) .last("limit 1") ); if(hisResult!=null){ declareHistory.setEditor(user.getId()); declareHistory.setEditDate(new Date()); declareHistory.setId(hisResult.getId()); declareHistory.setDeclareId(declares.getId()); declareHistoryMapper.updateById(declareHistory); }else{ declareHistory.setDeclareId(declares.getId()); declareHistoryMapper.insert(declareHistory); } }else{ declareHistory.setDeclareId(declares.getId()); declareHistoryMapper.insert(declareHistory); } } /** * 批量插入文件数据 * @param declares * @param querydec */ private void dealBatchMultiFiles(Declares declares, Declares querydec) { if(querydec!=null){ //删除原有的申报文件信息 Multifile multifile = new Multifile(); multifile.setObjId(declares.getId()); multifile.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey()); multifileService.delete(multifile); } //新增文件信息 if(declares.getFileList()!=null ){ declares.getFileList().forEach(i -> { if(StringUtils.isEmpty(i.getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } Multifile multifile = new Multifile(); multifile.setIsdeleted(Constants.ZERO); multifile.setCreateDate(new Date()); multifile.setObjId(declares.getId()); multifile.setName(i.getName()); multifile.setType(Constants.TWO); multifile.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey()); multifile.setFileurl(i.getFileurl()); multifileService.create(multifile); }); } } /** * 更新答题记录关联申报记录 */ private void updateAnswerRecord(Declares declares, Integer userid) { if(declares.getAnswerId()!=null){ //如果有答题,更新项目问卷答题记录 DeclareAnswer declareAnswer = new DeclareAnswer(); declareAnswer.setEditDate(new Date()); declareAnswer.setEditor(userid); declareAnswer.setId(declares.getAnswerId()); declareAnswer.setDeclareId(declares.getId()); declareAnswerMapper.updateById(declareAnswer); } } private Declares findByProjectAndCom(Integer projectId, Integer companyId) { Declares dp = new Declares(); dp.setCompanyId(companyId); dp.setProjectId(projectId); dp.setIsdeleted(Constants.ZERO); Declares querydec = declaresMapper.selectOne(new QueryWrapper<>(dp).last("limit 1") ); return querydec; } /** * 数据有效性校验 参数,及报名状态是否满足 * @param querydec * @param declares * @param project * @param user */ private void isCreateParamValid(Declares querydec, Declares declares,Project project, LoginUserInfo user) { if((Constants.equalsInteger(declares.getStatus(),Constants.ONE)) && (project.getLabelCount() >0 && declares.getDiagnoseTypeId() ==null)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,请选择诊断类型!"); } if(project.getQuestionnaireId() != null && declares.getAnswerId() == null && Constants.equalsInteger(declares.getStatus(),Constants.ONE)){ //项目如果有问卷信息,则必须填写问卷 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,该项目必须进行问卷填写哦!"); } if(Objects.nonNull(querydec) && !(Constants.equalsInteger(querydec.getStatus(),Constants.DeclareStatus.EDITING.getKey()) ||Constants.equalsInteger(querydec.getStatus(),Constants.DeclareStatus.CHECK_EDIT.getKey()))){ //如果存在报名记录,判断报名记录状态,只有三种状态可操作性 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "状态已变更不允许提交"); } //判断企业报名是报名还是提交,报名时参数不做判断,提交时参数做判断 if (Objects.isNull(declares.getStatus())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按照报名提交要求填写数据!"); } Company company=new Company(); company.setId(user.getCompanyId()); if(!companyService.judgeImproveIsFinish(company)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"提交失败!请先完善企业资料!"); } if(declares.getAnswerId()!=null){ //答题记录有效性 DeclareAnswer declareAnswer = declareAnswerMapper.selectById(declares.getAnswerId()) ; if(declareAnswer == null || !Constants.equalsInteger(declareAnswer.getQuestionnaireId(),project.getQuestionnaireId()) || !Constants.equalsInteger(declareAnswer.getCompanyId(),user.getCompanyId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,问卷填写数据有误,请尝试返回刷新重试!"); } } } @Override public void deleteById(Integer id) { declaresMapper.deleteById(id); } @Override public void delete(Declares declares) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(declares); declaresMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } declaresMapper.deleteBatchIds(ids); } @Override public void updateById(Declares declares) { declaresMapper.updateById(declares); } /** * 如果系统配置开启企业服务机构双选,针对【审核通过】及【服务机构拒绝】状态的报名信息,企业支持选择服务机构;选择后,状态流转为【待服务机构确认】 * * @param declares * @throws BusinessException */ @Override public void chooseService(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (declares.getId() == null || declares.getSoId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); wrapper.selectAs(Project::getSodType, Declares::getSodType); wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId); wrapper.eq(Project::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getId, declares.getId()); Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper); ProjectSo projectSo = projectSoService.belongToService(querydec,declares.getSoId()); chooseServiceJudge( declares, querydec, user, projectSo ); DeclareHistory history = new DeclareHistory(); history.setType(ProjectRecord.COM_SELECT_SO.getKey()); history.setStatus(Constants.DeclareStatus.WAIT_SO_COMFIRM.getKey()); history.setCheckor(user.getId()); history.setCheckDate(new Date()); history.setCheckInfo(ProjectRecord.COM_SELECT_SO.getNoteinfo().replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param5}", StringUtils.defaultString(projectSo.getCompanyName(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()))); querydec.setEditor(user.getId()); querydec.setEditDate(new Date()); querydec.setStatus(history.getStatus()); querydec.setCheckType(history.getType()); querydec.setSoId(declares.getSoId()); querydec.setCheckInfo(history.getCheckInfo()); querydec.setCheckor(history.getCheckor()); querydec.setCheckDate(history.getCheckDate()); declaresMapper.updateById(querydec); //插入历史记录表 history.setDeclareId(querydec.getId()); history.setCreator(user.getId()); history.setDeclareId(querydec.getId()); declareHistoryService.create(history); } /** * 企业报名详情选择服务机构保存数据校验 * @param declares * @param querydec * @param user */ public void chooseServiceJudge(Declares declares, Declares querydec,LoginUserInfo user,ProjectSo projectSo ){ if (!Constants.equalsInteger(user.getType(), UserType.COMPANY.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非企业用用户禁止操作"); } if (Objects.isNull(querydec)) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage()); } if (!Constants.equalsInteger(user.getCompanyId(), querydec.getCompanyId())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), ResponseStatus.NOT_ALLOWED.getMessage()); } if (Objects.isNull(projectSo)) { throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作"); } if (!Constants.equalsInteger(querydec.getSodType(), Constants.ZERO)) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "项目未开启双选不允许选择"); } if (!(Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey()) || Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SO_BACK.getKey()))) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "状态已流转,不允许操作"); } } @Override public void updateByIdInBatch(List declaress) { if (CollectionUtils.isEmpty(declaress)) { return; } for (Declares declares : declaress) { this.updateById(declares); } } @Override public Declares findById(Integer id) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Declares queryDec = declareJoinMapper.selectById(id); String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode(); Multifile mufQuery = new Multifile(); mufQuery.setIsdeleted(Constants.ZERO); mufQuery.setObjId(id); mufQuery.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey()); // mufQuery.setType(Constants.ZERO); List fileList = multifileService.findList(mufQuery); for(Multifile fl:fileList){ fl.setFileurlfull(path+fl.getFileurl()); } queryDec.setFileServiceList(fileList); //查看问卷详情 DeclareAnswer queryRes = new DeclareAnswer(); queryRes.setIsdeleted(Constants.ZERO); queryRes.setId(queryDec.getAnswerId()); DeclareAnswer dasRes = declareAnswerService.findOne(queryRes); queryDec.setDeclareAnswer(dasRes); return queryDec; } @Override public Declares findByProjectId(Integer projectId) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); // wrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark "); wrapper.eq(Declares::getProjectId,projectId); wrapper.eq(Declares::getIsdeleted,Constants.ZERO); wrapper.eq(Declares::getCompanyId,user.getCompanyId()); wrapper.selectAs(DeclareAnswer::getQuestionnaireId,Declares::getQuestionnaireId); wrapper.selectAs(DeclareAnswer::getScore,Declares::getExamScore); wrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType); wrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId); wrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId); wrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio); Declares queryDec = declareJoinMapper.selectJoinOne(Declares.class, wrapper); if(queryDec == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,无申报记录!"); } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode(); Multifile mufQuery = new Multifile(); mufQuery.setIsdeleted(Constants.ZERO); mufQuery.setObjId(queryDec.getId()); mufQuery.setObjType(Constants.MultiFile.BUSINESS_DECLARE.getKey()); mufQuery.setType(Constants.TWO); List fileList = multifileService.findList(mufQuery); for(Multifile fl:fileList){ fl.setFileurlfull(path+fl.getFileurl()); } queryDec.setFileServiceList(fileList); //查看问卷详情 // DeclareAnswer queryRes = new DeclareAnswer(); // queryRes.setIsdeleted(Constants.ZERO); // queryRes.setId(queryDec.getAnswerId()); if (Objects.nonNull(queryDec.getAnswerId())){ DeclareAnswer dasRes = declareAnswerMapper.selectById(queryDec.getAnswerId()); queryDec.setDeclareAnswer(dasRes); } return queryDec; } @Override public Declares findOne(Declares declares) { QueryWrapper wrapper = new QueryWrapper<>(declares); return declaresMapper.selectOne(wrapper); } @Override public List findList(Declares declares) { QueryWrapper wrapper = new QueryWrapper<>(declares); return declaresMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Declares declares = pageWrap.getModel(); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) { //县区角色 查看企业用户,除保存之外的所有数据 queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId()) .eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) { //市经信局/ 查看当前市局所有的企业 queryWrapper.eq(Project::getSjId, user.getId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey()) { //市经信局子账号/ 查看当前市局所有的企业 queryWrapper.eq(Project::getSjId, user.getParentId()); queryWrapper.exists("SELECT t1.id FROM project_permisson t1 WHERE t1.PROJECT_ID = t.project_id and t1.isdeleted=0 AND t1.OBJ_ID = "+user.getId()); }else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) { //综合服务单位 查看当前所有的企业 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=t.project_id and d.company_id="+user.getCompanyId()); // queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据 } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) { //综合服务单位子账号 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=t.project_id and d.company_id="+user.getCompanyId()); queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据 }else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){ //专家 queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():"")); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){ //服务机构管理员 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){ //服务机构管子管理 人员 queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据 } queryWrapper.selectAll(Declares.class); queryWrapper.selectAs(Company::getName,Declares::getCompanyName); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Company::getCityId,Declares::getCityId); queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode); queryWrapper.selectAs(Project::getName,Declares::getProjectName); queryWrapper.selectAs(Project::getSodType,Declares::getSodType); queryWrapper.selectAs(Project::getEdType,Declares::getEdType); queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck); queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType); queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio); queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId); // queryWrapper.select("a.name as areaName"); queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore); queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice"); queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore"); queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName"); // queryWrapper.select("ce.INCOME ,ce.ASSETS,ce.RATIO,ce.DEVELOP,ce.PROFIT,ce.TAXES,EMPLOYEE"); // queryWrapper.select("de.SCORE as expertScore ,s1.REALNAME as realZJName"); // queryWrapper.select("(select ls.NAME from labels ls where ls.id = c.INDUSTRY_ID and c.isdeleted=0 and c.TYPE=1 ) as indusrtyName");//行业 // queryWrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark "); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName); queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称 queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询行业信息 queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息 queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询答题信息 // queryWrapper.leftJoin("areas a on a.id = c.AREA_ID");//查询城市 queryWrapper.leftJoin("company so on so.id=t.so_id"); queryWrapper.select("so.name as serviceName"); /* queryWrapper.select("(select ps.price from project_so ps where ps.isdeleted=0 and ps.project_id=t.project_id and ps.COMPANY_ID=so.id limit 1) as servicePrice");*/ // queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId // , ext -> ext.selectAs(Company::getName, Declares::getServiceName) // );//查询服务机构名称 // queryWrapper.leftJoin("declare_expert de on de.DECLARE_ID = t.id and de.ISDELETED=0 ");//查询城市 // queryWrapper.leftJoin("system_user s1 on s1.id = de.EXPERT_ID and s1.DELETED=0");//查询专家姓名 queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号 queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号 // queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标 queryWrapper.eq(declares.getProjectId() !=null,Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey())); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.like(StringUtils.isNotBlank(declares.getProjectName()), Project::getName, declares.getProjectName()); queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName()); queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus()); queryWrapper.orderByDesc(Declares::getCreateDate); queryWrapper.eq(pageWrap.getModel().getSoId()!=null,Declares::getSoId,pageWrap.getModel().getSoId()); IPage result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper); if(result!=null&&result.getRecords().size()>0){ for(int i=0;i findCompanyDeclaresVoPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); Declares model = pageWrap.getModel(); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId) .innerJoin(DeclareExpert.class, DeclareExpert::getDeclareId, Declares::getId) .leftJoin(DeclareAnswer.class, DeclareAnswer::getId, Declares::getAnswerId) .leftJoin(Labels.class,Labels::getId,Declares::getDiagnoseTypeId) .like(!StringUtils.isEmpty(model.getCompanyName().trim()), Company::getName, pageWrap.getModel().getCompanyName().trim()) .eq(DeclareExpert::getStatus, model.getExpertStatus()) .eq(Declares::getProjectId, model.getProjectId()) .selectAll(Declares.class) .selectAs(Company::getName, Declares::getCompanyName) .selectAs(Company::getAddress, Declares::getCityName) .selectAs(DeclareExpert::getScore, Declares::getExpertScore) .selectAs(DeclareExpert::getStatus, Declares::getExpertStatus) .selectAs(DeclareAnswer::getScore, Declares::getExamScore) .selectAs(Labels::getName,Declares::getDiagnoseType); IPage declaresIPage = declareJoinMapper.selectJoinPage(page, Declares.class, wrapper); List records = declaresIPage.getRecords(); if (!CollectionUtils.isEmpty(records)) { List projectIds = records.stream().map(s -> s.getProjectId()).distinct().collect(Collectors.toList()); // List answerIds = records.stream().map(s -> s.getAnswerId()).distinct().collect(Collectors.toList()); List soIds = records.stream().map(s -> s.getSoId()).distinct().collect(Collectors.toList()); QueryWrapper projectWrapper = new QueryWrapper<>(); projectWrapper.lambda().in(Project::getId, projectIds); List projects = projectMapper.selectList(projectWrapper); Map collect = projects.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName())); // QueryWrapper answerWrapper = new QueryWrapper<>(); // answerWrapper.lambda().in(DeclareAnswer::getId,answerIds); // List declareAnswers = declareAnswerMapper.selectList(answerWrapper); // Map answerMap = declareAnswers.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getScore())); QueryWrapper companyWrapper = new QueryWrapper<>(); companyWrapper.lambda().in(Company::getId, soIds); List companies = companyMapper.selectList(companyWrapper); Map companyMap = companies.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName())); List objectStream = records.stream().map(s -> { CompanyDeclaresVo vo = new CompanyDeclaresVo(); vo.setCompanyId(s.getCompanyId()); vo.setCompanyName(s.getCompanyName()); vo.setAddress(s.getCityName()); vo.setExamScore(s.getExamScore()); vo.setProjectId(s.getProjectId()); vo.setProjectName(collect.getOrDefault(s.getProjectId(), "")); vo.setServiceCompanyId(s.getSoId()); vo.setServiceCompanyName(companyMap.getOrDefault(s.getSoId(), "")); vo.setExpertScore(s.getExpertScore()); vo.setDeclaresExpertStatus(s.getExpertStatus()); return vo; }).collect(Collectors.toList()); return PageData.from(declaresIPage, objectStream); } return PageData.from(declaresIPage, null); } @Transactional(rollbackFor = {BusinessException.class, Exception.class}) @Override public void checkExpertDeclares(ExpertReportDTO expertReportDTO) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (UserType.EXPERT.getKey() != user.getType()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED); } Date date = new Date(); //TODO 连接查询 //查询最新的一条数据 MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.leftJoin(Declares.class,Declares::getId,DeclareExpert::getDeclareId) .eq(DeclareExpert::getDeclareId, expertReportDTO.getDeclareId()) .eq(DeclareExpert::getExpertId,user.getId()) .eq(DeclareExpert::getIsdeleted,Constants.ZERO) .orderByDesc(DeclareExpert::getCreateDate) .last("limit 1") .selectAll(DeclareExpert.class) .selectAs(Declares::getStatus,DeclareExpert::getDeclareStatus); DeclareExpert declareExpert = declareExpertJoinMapper.selectOne(wrapper); declareExpert = Optional.ofNullable(declareExpert) .filter(s -> Constants.ZERO == Constants.formatIntegerNum(s.getStatus())) .filter(s->Constants.DeclareStatus.SELECT_EXPERT.getKey() == Constants.formatIntegerNum(s.getDeclareStatus())) .orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"当前项目重分配给其他专家,不能进行当前操作")); // Declares declare = findById(expertReportDTO.getDeclareId()); // declare = Optional.ofNullable(declare) // .filter(s -> Constants.DeclareStatus.SELECT_EXPERT.getKey() == Constants.formatIntegerNum(s.getStatus())) // .orElseThrow(() -> new BusinessException(ResponseStatus.NOT_ALLOWED)); DeclareExpert updateExpert = new DeclareExpert(); updateExpert.setId(declareExpert.getId()); updateExpert.setScore(expertReportDTO.getExpertScore()); updateExpert.setScoreDate(date); updateExpert.setStatus(Constants.ONE); updateExpert.setEditor(user.getId()); updateExpert.setEditDate(date); declareExpertMapper.updateById(updateExpert); DeclareHistory history = new DeclareHistory(); history.setCreator(user.getId()); history.setCreateDate(date); history.setEditor(user.getId()); history.setEditDate(date); history.setDeclareId(declareExpert.getDeclareId()); history.setType(Constants.DeclareHistoryType.EXPERT_SCORE.getKey()); // 1,时间 2 角色 3 realName 4 时间; // Map map = new HashMap<>(); // map.put("param1", DateUtil.getPlusTime2(new Date())); // map.put("param2", "专家"); // map.put("param3", user.getRealname()); // map.put("param4", "已完成"); String replace = ProjectRecord.EXPERT_SCORE.getNoteinfo().replace("${param2}", UserType.EXPERT.getName()) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param4}", Constants.DeclareStatus.DONE.getName()); // String contentWithData = ProjectRecord.getContentWithData(ProjectRecord.EXPERT_SCORE, map); history.setCheckInfo(replace); history.setCheckor(user.getId()); history.setCheckDate(date); history.setStatus(declareExpert.getDeclareStatus()); history.setIsdeleted(Constants.ZERO); declareHistoryMapper.insert(history); Declares declares = new Declares(); declares.setId(declareExpert.getDeclareId()); declares.setEditor(user.getId()); declares.setEditDate(date); declares.setCheckDate(date); declares.setCheckInfo(replace); declares.setStatus(Constants.DeclareCheckType.DONE.getKey()); declares.setCheckType(Constants.DeclareCheckType.DONE.getKey()); declares.setCheckor(user.getId()); updateById(declares); if (!CollectionUtils.isEmpty(expertReportDTO.getMultiFileDTOs())) { DeclareExpert finalDeclareExpert = declareExpert; expertReportDTO.getMultiFileDTOs().forEach(s->{ Multifile multifile = new Multifile(); multifile.setCreator(user.getId()); multifile.setCreateDate(date); multifile.setEditor(user.getId()); multifile.setEditDate(date); multifile.setName(s.getName()); multifile.setIsdeleted(Constants.ZERO); multifile.setInfo(multifile.getInfo()); multifile.setObjId(finalDeclareExpert.getId()); multifile.setType(Constants.TWO); multifile.setObjType(Constants.MultiFile.BUSINESS_EXPERT.getKey()); multifile.setFileurl(s.getFileurl()); multifileMapper.insert(multifile); }); } } @Override public long count(Declares declares) { QueryWrapper wrapper = new QueryWrapper<>(declares); return declaresMapper.selectCount(wrapper); } @Override public PageData getPageByProjectId(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(pageWrap.getModel().getProjectId() == null){ pageWrap.getModel().setProjectId(-1); } Declares declares = pageWrap.getModel(); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) { //县区角色 查看企业用户,除保存之外的所有数据 queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId()) .eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) { //市经信局// 查看当前市局所有的企业 //存在已经报名的企业修改地区导致无法查询到 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); }else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey()) { //市局子账号 } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) { //综合服务单位 查看当前所有的企业 //存在已经报名的企业修改地区导致无法查询到 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) { //综合服务单位子账号 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据 }else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){ //专家 queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():"")); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){ //服务机构管理员 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){ //服务机构管 子管理 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据 } queryWrapper.selectAll(Declares.class); queryWrapper.selectAs(Company::getName,Declares::getCompanyName); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Company::getCityId,Declares::getCityId); queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode); queryWrapper.selectAs(Project::getName,Declares::getProjectName); queryWrapper.selectAs(Project::getSodType,Declares::getSodType); queryWrapper.selectAs(Project::getEdType,Declares::getEdType); queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck); queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType); queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio); // queryWrapper.select("a.name as areaName"); queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore); queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.TYPE = 0 and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice"); queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore"); queryWrapper.select("(select count(id) from project_score psc where psc.PROJECT_ID = PROJECT_ID ) as countProjectScore "); queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName"); // queryWrapper.select("ce.INCOME ,ce.ASSETS,ce.RATIO,ce.DEVELOP,ce.PROFIT,ce.TAXES,EMPLOYEE"); // queryWrapper.select("de.SCORE as expertScore ,s1.REALNAME as realZJName"); // queryWrapper.select("(select ls.NAME from labels ls where ls.id = c.INDUSTRY_ID and c.isdeleted=0 and c.TYPE=1 ) as indusrtyName");//行业 // queryWrapper.select("( select dh.REMARK from declare_history dh where dh.status=t.status and dh.DECLARE_ID=t.id and dh.ISDELETED=0 order by dh.CREATE_DATE desc limit 1) as historyRemark "); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName); queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称 queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称 queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息 queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId); // queryWrapper.leftJoin(Areas.class,Areas::getId,Project::getCityId);//查询项目信息 queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息 // queryWrapper.leftJoin("areas a on a.id = c.AREA_ID");//查询城市 queryWrapper.leftJoin("company so on so.id=t.so_id"); queryWrapper.select("so.name as serviceName"); /* queryWrapper.select("(select ps.price from project_so ps where ps.isdeleted=0 and ps.project_id=t.project_id and ps.COMPANY_ID=so.id limit 1) as servicePrice");*/ // queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId // , ext -> ext.selectAs(Company::getName, Declares::getServiceName) // );//查询服务机构名称 // queryWrapper.leftJoin("declare_expert de on de.DECLARE_ID = t.id and de.ISDELETED=0 ");//查询城市 // queryWrapper.leftJoin("system_user s1 on s1.id = de.EXPERT_ID and s1.DELETED=0");//查询专家姓名 queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号 queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号 // queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标 queryWrapper.eq(Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey())); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName()); queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus()); // queryWrapper.eq(declares.getProvinceId() != null, Areas::getParentId,declares.getProvinceId()); queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId()); // queryWrapper.eq(declares.getCityId() != null, "so.CITY_ID", declares.getCityId()); // queryWrapper.eq(declares.getAreaId() != null, "so.AREA_ID", declares.getAreaId()); queryWrapper.eq(declares.getCityId() != null, Company::getCityId, declares.getCityId()); queryWrapper.eq(declares.getAreaId() != null, Company::getAreaId, declares.getAreaId()); queryWrapper.orderByDesc(Declares::getCreateDate); IPage result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper); if(result!=null && result.getRecords().size()>0){ List collect = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList()); ProjectScore ps = new ProjectScore(); ps.setIsdeleted(Constants.ZERO); ps.setProjectId(declares.getProjectId() ); //查询项目角色评分配置信息 List psList = projectScoreMapper.selectList(new QueryWrapper<>(ps)); Map> objFileUrl = multifileService.getOBJFileUrl(collect, Constants.MultiFile.BUSINESS_DECLARE.getKey()); for(int i=0;i multifiles = objFileUrl.get(ds.getId()); ds.setFileServiceList(multifiles); if(ds.getAreaId() != null){ Areas area = areasService.findById(ds.getAreaId(),Constants.TWO); if(area!=null){ ds.setAreaName(area.getName()); ds.setCityName(area.getCityName()+ds.getAreaName()); } }else if(ds.getCityId() != null){ Areas area = areasService.findById(ds.getCityId(),Constants.ONE); if(area!=null){ ds.setCityName(area.getName()); } } // 查询服务价格 queryScoreRatio(psList,ds); } } return PageData.from(result); } @Override public List bsSoSortData(Declares param) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); List result = new ArrayList<>(); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return result; } param.setAreaId(user.getAreaId()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.isNotNull(Declares::getSoId); queryWrapper.apply(param.getAreaId()!=null,"t2.area_id =" +param.getAreaId()); queryWrapper.groupBy(Declares::getSoId); queryWrapper.select("t.so_id as id,t1.name as name,count(DISTINCT ( t.company_id )) as num," + "(select count(DISTINCT ( c.company_id )) from declares c where c.project_id="+param.getProjectId()+" and t1.id=c.SO_ID and c.`STATUS` in (9,10,11,13)) as doneNum"); List list = declareJoinMapper.selectJoinList(BsSoSortDataVo.class, queryWrapper); if(list !=null){ for(BsSoSortDataVo model:list){ model.setRate(new BigDecimal(0.00)); if(model.getNum()>0){ model.setRate((new BigDecimal(model.getDoneNum()*100 ).divide(new BigDecimal(model.getNum()),2, RoundingMode.FLOOR))); } } } Collections .sort( list,new BsSoSortDataVo()); return list; } @Override public List bsIndustryTimesData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new ArrayList<>(); } param.setAreaId(user.getAreaId()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.leftJoin(ProjectLabel.class, ProjectLabel::getId, Declares::getDiagnoseTypeId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.ne(Declares::getStatus, Constants.ZERO); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.apply(param.getAreaId()!=null,"t2.area_id =" +param.getAreaId()); queryWrapper.groupBy(Declares::getDiagnoseTypeId); queryWrapper.select("count(t.id) as num,t3.name"); List list = declareJoinMapper.selectJoinList(BsIndustryTimesVo.class, queryWrapper); return list; } @Override public List bsComNumAndIncomceData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new ArrayList<>(); } param.setAreaId(user.getAreaId()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.leftJoin(Labels.class, Labels::getId, Company::getIndustryId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.eq(param.getDiagnoseTypeId()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId()); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId()); queryWrapper.groupBy(Company::getIndustryId); queryWrapper.orderByAsc(Labels::getSortnum ); queryWrapper.select("count(t.id) as num,t2.name" + ",(select sum(c.income) from company_economics c left join company c1 on c.COMPANY_ID =c1.id where c.isdeleted=0 " + "and exists(select c2.id from declares c2 where c2.company_id=c1.id and c2.project_id="+param.getProjectId() +(param.getDiagnoseTypeId()!=null?" and c2.diagnose_type_id="+param.getDiagnoseTypeId():"") +(param.getAreaId()!=null?" and c1.area_id ="+param.getAreaId():"") +") and c1.industry_id =t1.industry_id and c.YEARS="+(DateUtil.getCurrentYear()-1)+") as income"); List list = declareJoinMapper.selectJoinList(BsIComNumAndIncomeVo.class, queryWrapper); return list; } @Override public PageData bsSoDetailNumData(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); Utils.MP.blankToNull(pageWrap.getModel()); Declares param = pageWrap.getModel(); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); List result = new ArrayList<>(); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new PageData<>(0,0); } param.setAreaId(user.getAreaId()); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(Company::getType, Constants.CompanyType.SERVICE_COMPANYTYPE.getValue() ); queryWrapper.lambda().eq(Company::getIsdeleted, Constants.ZERO); queryWrapper.select("*,(select count(c.id) from declares c where c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as num," + "(select count(c.id) from declares c where c.status in (9,10,11,13) and c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as doneNum,"+ " (select count(c.id) from declares c where c.status=8 and c.so_id=company.id and c.isdeleted=0 and c.project_id="+param.getProjectId() +") as ingNum"); queryWrapper.lambda().exists("select b.id from declares b left join company c on b.company_id=c.id where b.project_id="+param.getProjectId() + " and b.so_id=company.id and b.isdeleted=0"+(param.getAreaId()!=null?" and c.area_id="+param.getAreaId():"")); //查询服务机构 PageData pageList = PageData.from(companyMapper.selectPage(page, queryWrapper)); List soList =pageList.getRecords(); if(soList !=null){ //查询评分系数 ProjectRatio projectRatio=new ProjectRatio(); projectRatio.setProjectId(param.getProjectId()); projectRatio.setIsdeleted(Constants.ZERO); List paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio) .orderByAsc("MAX_NUM") ); ProjectScore ps = new ProjectScore(); ps.setIsdeleted(Constants.ZERO); ps.setProjectId(param.getProjectId()); //查询全部配置信息 List psList = projectScoreMapper.selectList(new QueryWrapper<>(ps)); DeclareScore ds = new DeclareScore(); ds.setIsdeleted(Constants.ZERO); ds.setStatus(Constants.ONE);//提交数据 MPJLambdaWrapper queryWrapper1 = new MPJLambdaWrapper<>(); queryWrapper1.selectAll(Declares.class); queryWrapper1.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper1.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper1.eq(Declares::getProjectId, param.getProjectId()); queryWrapper1.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId()); queryWrapper1.selectAs(ProjectLabel::getName,Declares::getDiagnoseType); queryWrapper1.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio); queryWrapper1.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId); queryWrapper1.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice"); queryWrapper1.eq(param.getDiagnoseType()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId()); queryWrapper1.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId()); //查询全部申报数据 List alllist = declareJoinMapper.selectJoinList(Declares.class, queryWrapper1); //查询全部配置信息 List dsList = declareScoreMapper.selectList(new QueryWrapper<>(ds).exists("select c.id from declares c where c.project_id="+param.getProjectId()+ " limit 1") ); for(Company so :soList){ BsSoDetailNumVo t = new BsSoDetailNumVo(); t.setName(so.getName()); t.setNum(so.getNum()); t.setIngNum(so.getIngNum()); t.setDoneNum(so.getDoneNum()); t.setRate(new BigDecimal(0)); if(t.getNum()>0){ t.setRate(new BigDecimal(t.getDoneNum()*100).divide(new BigDecimal(t.getNum()),2,RoundingMode.FLOOR)); } param.setSoId(so.getId()); //诊断报告等级分析数据 t.setLevelNumInfo(bsScoreLevelNumDataForDetail(param,paList,psList,dsList,alllist)); //服务次数分析数据 t.setServerTimesInfo(bsServerTimesData(param)); //总服务费用计算 int total = 0; if(t.getLevelNumInfo()!=null){ for(BsScoreLevelNumVo mm : t.getLevelNumInfo()){ total += mm.getNum(); t.setPrice(Constants.formatBigdecimal(t.getPrice()).add(Constants.formatBigdecimal(mm.getTotalPrice()))); } } /*if(total < t.getNum()){ BsScoreLevelNumVo mm = new BsScoreLevelNumVo(); mm.setName("暂无等级"); mm.setNum(t.getNum()-total); mm.setTotalPrice(new BigDecimal(0)); mm.setId(-1); if(t.getLevelNumInfo() == null){ t.setLevelNumInfo(new ArrayList<>()); } t.getLevelNumInfo().add(mm); }*/ result.add(t); } } PageData pageList1 = new PageData<>(pageList.getPageCount(),pageList.getPageCount()); pageList1.setPage(pageList.getPage()); pageList1.setTotal(pageList.getTotal()); pageList1.setCapacity(pageList.getCapacity()); pageList1.setRecords(result); return pageList1; } @Override public List bsAreaComNumData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new ArrayList<>(); } param.setAreaId(user.getAreaId()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.leftJoin(Areas.class, Areas::getId, Company::getAreaId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.ne(Declares::getStatus, Constants.ZERO); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.eq(param.getDiagnoseType()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId()); queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId()); queryWrapper.groupBy(Company::getAreaId ); queryWrapper.select("count(t.id) as num,t2.name,t2.code as areaCode" + ",(select count(c.id) from declares c left join company c1 on c.COMPANY_ID =c1.id " + "where c.status in(9,10,11,13) and c.isdeleted=0 and c1.area_id =t1.area_id and c.project_id="+param.getProjectId()+" ) as doneNum"); List list = declareJoinMapper.selectJoinList(BsAreaComNumVo.class, queryWrapper); return list; } @Override public List bsScoreLevelNumData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new ArrayList<>(); } param.setAreaId(user.getAreaId()); } //查询评分系数 ProjectRatio projectRatio=new ProjectRatio(); projectRatio.setProjectId(param.getProjectId()); projectRatio.setIsdeleted(Constants.ZERO); List paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio) .orderByAsc("MAX_NUM") ); /*if(paList == null || paList.size() ==0){ return new ArrayList<>(); }*/ ProjectScore ps = new ProjectScore(); ps.setIsdeleted(Constants.ZERO); ps.setProjectId(param.getProjectId()); //查询全部配置信息 List psList = projectScoreMapper.selectList(new QueryWrapper<>(ps)); /* if(psList == null || psList.size() ==0){ return new ArrayList<>(); }*/ DeclareScore ds = new DeclareScore(); ds.setIsdeleted(Constants.ZERO); ds.setStatus(Constants.ONE);//提交数据 //查询全部配置信息 List dsList = declareScoreMapper.selectList(new QueryWrapper<>(ds).exists("select c.id from declares c where c.project_id="+param.getProjectId()+ " limit 1") ); /* if(dsList == null || dsList.size() ==0){ return new ArrayList<>(); }*/ List statusList = new ArrayList<>(); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(Declares.class); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.ne(Declares::getStatus, Constants.ZERO); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId()); queryWrapper.eq(param.getDiagnoseTypeId()!=null,Declares::getDiagnoseTypeId, param.getDiagnoseTypeId()); queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId()); //查询全部申报数据 List list = declareJoinMapper.selectJoinList(Declares.class, queryWrapper); List result = new ArrayList<>(); if(list == null){ return result; } for(Declares model:list){ ProjectRatio pa= queryScoreLevel(paList,model,dsList,psList); if(pa !=null){ BsScoreLevelNumVo t = getFromListByPaid(pa.getId(),result); if(t == null){ t = new BsScoreLevelNumVo(); t.setNum(1); t.setName(pa.getName()); t.setId(pa.getId()); if(param.getSoId()!=null){ t.setTotalPrice(model.getServicePrice2()); } result.add(t); }else { if(param.getSoId()!=null){ t.setTotalPrice(t.getTotalPrice().add(model.getServicePrice2())); } t.setNum(t.getNum()+1); } } } return result; } public List bsScoreLevelNumDataForDetail(Declares param, List paList , List psList , List dsList, List alllist ){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new ArrayList<>(); } param.setAreaId(user.getAreaId()); } List list = getFromAllListBySoid(param.getSoId(),alllist); List result = new ArrayList<>(); if(list == null){ return result; } for(Declares model:list){ ProjectRatio pa= queryScoreLevel(paList,model,dsList,psList); if(pa !=null){ BsScoreLevelNumVo t = getFromListByPaid(pa.getId(),result); if(t == null){ t = new BsScoreLevelNumVo(); t.setNum(1); t.setName(pa.getName()); t.setId(pa.getId()); if(param.getSoId()!=null){ t.setTotalPrice(model.getServicePrice2()); } result.add(t); }else { if(param.getSoId()!=null){ t.setTotalPrice(t.getTotalPrice().add(model.getServicePrice2())); } t.setNum(t.getNum()+1); } } } return result; } private List getFromAllListBySoid(Integer soId, List alllist) { List list = new ArrayList<>(); if(alllist!=null){ for(Declares d :alllist){ if(soId!=null && d.getSoId()!=null && soId.equals(d.getSoId())){ list.add(d); } } } return list; } private BsScoreLevelNumVo getFromListByPaid(Integer id, List result) { for(BsScoreLevelNumVo m : result){ if(Constants.equalsInteger(id,m.getId())){ return m; } } return null; } /** * 查询服务价格 */ public ProjectRatio queryScoreLevel( List paList,Declares declares,List scoreList,List psList){ declares.setServicePrice2(new BigDecimal(0)); if( paList!=null &&paList.size()>0 && scoreList!=null &&scoreList.size()>0 && psList!=null && psList.size()>0) { BigDecimal score = declareScoreService.getDeclareScoreAll(declares.getProjectId(),declares.getId(),scoreList,psList); if(score!=null ) { //查询项目评分系数 for(ProjectRatio pa:paList){ int flag= score.compareTo(pa.getMaxNum()); if(!Constants.equalsInteger(flag,1)){ BigDecimal servicePrice2=Constants.formatBigdecimal(declares.getServicePrice()).multiply(Constants.formatBigdecimal(declares.getDiagnoseTypeRatio())).multiply(Constants.formatBigdecimal(pa.getRatio()).divide(new BigDecimal(100*100))); declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP)); return pa; } } } } ProjectRatio pa = new ProjectRatio(); pa.setId(-1); pa.setName("暂无等级"); pa.setRatio(new BigDecimal(0)); return pa; } @Override public BsServerTimesVo bsServerTimesData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); BsServerTimesVo result = new BsServerTimesVo(); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return result; } param.setAreaId(user.getAreaId()); } MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Declares.class, Declares::getId, DeclareService::getDeclareId); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getSoId); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.eq(DeclareService::getIsdeleted, Constants.ZERO); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.eq(DeclareService::getType, Constants.ZERO); queryWrapper.eq(DeclareService::getStatus, Constants.ONE); queryWrapper.apply(param.getAreaId()!=null,"t3.area_id =" +param.getAreaId()); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); // queryWrapper.eq(param.getAreaId()!=null,Company::getAreaId, param.getAreaId()); queryWrapper.eq(param.getSoId()!=null,Declares::getSoId, param.getSoId()); queryWrapper.groupBy(DeclareService::getDeclareId); queryWrapper.select("count(t.id)"); List list = declareServiceJoinMapper.selectJoinList(Integer.class, queryWrapper); if(list !=null){ for(Integer model:list){ if(Constants.formatIntegerNum(model )>0){ result.setNum(result.getNum()+1); if(model == 1){ result.setOneNum(result.getOneNum()+1); }else if(model == 2){ result.setTwoNum(result.getTwoNum()+1); }else if(model == 3){ result.setThreeNum(result.getThreeNum()+1); }else if(model == 4){ result.setFourNum(result.getFourNum()+1); }else{ result.setFiveNum(result.getFiveNum()+1); } } } } return result; } @Override public BsIncomeNumVo bsIncomeNumData(Declares param){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(param.getProjectId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } validUserType(user); if(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey()){ //如果是县区用户,只能查看当前县区下的数据 if(user.getAreaId() == null){ return new BsIncomeNumVo(); } param.setAreaId(user.getAreaId()); } int year = DateUtil.getCurrentYear() -1;//上一年 MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.eq(Company::getIsdeleted, Constants.ZERO); queryWrapper.apply(param.getAreaId()!=null,"t1.area_id =" +param.getAreaId()); queryWrapper.eq(Declares::getProjectId, param.getProjectId()); queryWrapper.eq(param.getAreaId()!=null,Company::getAreaId, param.getAreaId()); queryWrapper.select("(select c.INCOME from company_economics c where c.isdeleted=0 and c.COMPANY_ID =t1.id and c.YEARS="+year+" limit 1)"); List list = declareJoinMapper.selectJoinList(BigDecimal.class, queryWrapper); //统计维度:2千万-5千万,5千万-1亿, 1亿-5亿, 5亿-10亿, 10亿以上,左包含 BsIncomeNumVo result = new BsIncomeNumVo(); if(list !=null){ for(BigDecimal model:list){ if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000 * 2 ))>=0){ result.setNum(result.getNum()+1); if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000 *100))>=0){ //10亿及以上 result.setFiveNum(result.getFiveNum()+1); }else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*50 ))>=0){ //5亿-10亿 result.setFourNum(result.getFourNum()+1); }else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*10 ))>=0){ // 1亿-5亿 result.setThreeNum(result.getThreeNum()+1); }else if(Constants.formatBigdecimal(model ).compareTo(new BigDecimal(1000*5 ))>=0){ //5千万-1亿 result.setTwoNum(result.getTwoNum()+1); }else{ result.setOneNum(result.getOneNum()+1); } }else{ result.setZeroNum(result.getZeroNum()+1); } } } return result; } private void validUserType(LoginUserInfo user) { if (!(Constants.formatIntegerNum(user.getType()) == Constants.UserType.AREA.getKey() ||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ.getKey() ||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SJ_CHILD.getKey() ||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_ADMIN.getKey() ||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SD_CHILD.getKey() ||Constants.formatIntegerNum(user.getType()) == Constants.UserType.SYSTEM.getKey() )){ throw new BusinessException(ResponseStatus.NOT_ALLOWED); } } @Override public List exportExcelForProject(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Declares declares = pageWrap.getModel(); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) { //县区角色 查看企业用户,除保存之外的所有数据 queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId()) .eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) { //市经信局/ 查看当前市局所有的企业 //存在已经报名的企业修改地区导致无法查询到 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) { //综合服务单位 查看当前所有的企业 //存在已经报名的企业修改地区导致无法查询到 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) { //综合服务单位子账号 // queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据 }else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){ //专家 queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():"")); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){ //服务机构管理员 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){ //服务机构管 子管理 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据 } queryWrapper.selectAll(Declares.class); queryWrapper.selectAs(Company::getName,Declares::getCompanyName); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Company::getCityId,Declares::getCityId); queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode); queryWrapper.selectAs(Project::getName,Declares::getProjectName); queryWrapper.selectAs(Project::getSodType,Declares::getSodType); queryWrapper.selectAs(Project::getEdType,Declares::getEdType); queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck); queryWrapper.selectAs(ProjectLabel::getName,Declares::getDiagnoseType); queryWrapper.selectAs(ProjectLabel::getRatio,Declares::getDiagnoseTypeRatio); queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore); queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice"); queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore"); queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName"); queryWrapper.select("t3.name as labelName"); queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName"); if(pageWrap.getModel().getQueryFlag()==Constants.ONE){ //查询前一年营业收入和利润总额 queryWrapper.select("(select concat(ce.income,'&&',ce.profit) from company_economics ce where ce.years="+DateUtil.getYear(DateUtil.addDaysToDate(new Date(),-365))+" and ce.isdeleted=0 and ce.company_id =t.company_id limit 1)as economics "); } queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName); queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称 queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称 queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getLabelId);//查询企业规模 queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息 queryWrapper.leftJoin(ProjectLabel.class,ProjectLabel::getId,Declares::getDiagnoseTypeId); queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息 queryWrapper.leftJoin("company so on so.id=t.so_id"); queryWrapper.select("so.name as serviceName"); queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号 queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号 // queryWrapper.leftJoin("company_economics ce on ce.COMPANY_ID = c.id and ce.ISDELETED=0 and ce.YEARS=year(now())-1");//查询经济指标 queryWrapper.eq(Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey())); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName()); queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus()); queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId()); queryWrapper.eq(declares.getCityId() != null, Company::getCityId, declares.getCityId()); queryWrapper.eq(declares.getAreaId() != null, Company::getAreaId, declares.getAreaId()); queryWrapper.orderByDesc(Declares::getCreateDate); IPage result = declaresJoinMapper.selectJoinPage(page, Declares.class, queryWrapper); if(result!=null && result.getRecords().size()>0){ List collect = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList()); Map> objFileUrl = multifileService.getOBJFileUrl(collect, Constants.MultiFile.BUSINESS_DECLARE.getKey()); for(int i=0;i multifiles = objFileUrl.get(ds.getId()); ds.setFileServiceList(multifiles); if(ds.getAreaId() != null){ Areas area = areasService.findById(ds.getAreaId(),Constants.TWO); if(area!=null){ ds.setAreaName(area.getName()); ds.setCityName(area.getCityName()+ds.getAreaName()); } }else if(ds.getCityId() != null){ Areas area = areasService.findById(ds.getCityId(),Constants.ONE); if(area!=null){ ds.setCityName(area.getName()); } } // 查询服务价格 queryScoreRatio(ds); } } return result.getRecords(); } /** * 查询服务价格 * @param declares */ public void queryScoreRatio( List psList,Declares declares){ //查询专家姓名和评分 DeclareExpert declareExpert=new DeclareExpert(); declareExpert.setIsdeleted(Constants.ZERO); declareExpert.setDeclareId(declares.getId()); DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert) .select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ") .eq("ISDELETED",0) .last("limit 1") ); if(Objects.nonNull(det)){ declares.setRealZJName(det.getRealZJName()); declares.setExpertScore(det.getScore()); } declares.setRoleScore(declareScoreService.getDeclareScoreByList(psList,declares.getId())); if( declares.getRoleScore() !=null) { //查询项目评分系数 ProjectRatio projectRatio=new ProjectRatio(); projectRatio.setProjectId(declares.getProjectId()); projectRatio.setIsdeleted(Constants.ZERO); List paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio) .orderByAsc("MAX_NUM") ); declares.setServicePrice2(new BigDecimal(0)); for(ProjectRatio pa:paList){ int flag= declares.getRoleScore().compareTo(pa.getMaxNum()); if(!Constants.equalsInteger(flag,1)){ if(Objects.nonNull(pa.getRatio()) && Objects.nonNull(declares.getServicePrice())){ declares.setLevelName(pa.getName()); BigDecimal servicePrice2=declares.getServicePrice().multiply(Constants.formatBigdecimal4Float(declares.getDiagnoseTypeRatio())).multiply(pa.getRatio().divide(new BigDecimal(100*100))); declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP)); } break; } } } } /** * 查询服务价格 * @param declares */ public void queryScoreRatio( Declares declares){ //查询专家姓名和评分 DeclareExpert declareExpert=new DeclareExpert(); declareExpert.setIsdeleted(Constants.ZERO); declareExpert.setDeclareId(declares.getId()); DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert) .select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ") .eq("ISDELETED",0) .last("limit 1") ); if(Objects.nonNull(det)){ declares.setRealZJName(det.getRealZJName()); declares.setExpertScore(det.getScore()); } declares.setRoleScore(declareScoreService.getDeclareScore(declares.getProjectId(),declares.getId())); // if(Constants.equalsInteger(Constants.DeclareStatus.DONE.getKey(), declares.getStatus())&&det!=null&&Objects.nonNull(det.getScore())){ if( declares.getRoleScore() !=null) { //查询项目评分系数 ProjectRatio projectRatio=new ProjectRatio(); projectRatio.setProjectId(declares.getProjectId()); projectRatio.setIsdeleted(Constants.ZERO); List paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio) .orderByAsc("MAX_NUM") ); declares.setServicePrice2(new BigDecimal(0)); for(ProjectRatio pa:paList){ int flag= declares.getRoleScore().compareTo(pa.getMaxNum()); if(!Constants.equalsInteger(flag,1)){ if(Objects.nonNull(pa.getRatio()) && (Objects.nonNull(declares.getServicePrice()))){ declares.setLevelName(pa.getName()); BigDecimal servicePrice2=declares.getServicePrice().multiply(Constants.formatBigdecimal(declares.getDiagnoseTypeRatio())).multiply(pa.getRatio().divide(new BigDecimal(100*100))); declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP)); } break; } } } } /** * 查询服务价格 * @param declares */ public void queryScoreRatioOld(Declares declares){ //查询专家姓名和评分 DeclareExpert declareExpert=new DeclareExpert(); declareExpert.setIsdeleted(Constants.ZERO); declareExpert.setDeclareId(declares.getId()); DeclareExpert det= declareExpertMapper.selectOne(new QueryWrapper<>(declareExpert) .select("declare_expert.SCORE ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ") .eq("ISDELETED",0) .last("limit 1") ); if(Objects.nonNull(det)){ declares.setRealZJName(det.getRealZJName()); declares.setExpertScore(det.getScore()); } if(Constants.equalsInteger(Constants.DeclareStatus.DONE.getKey(), declares.getStatus())&&det!=null&&Objects.nonNull(det.getScore())){ //查询项目评分系数 ProjectRatio projectRatio=new ProjectRatio(); projectRatio.setProjectId(declares.getProjectId()); projectRatio.setIsdeleted(Constants.ZERO); List paList= projectRatioMapper.selectList(new QueryWrapper<>(projectRatio) .orderByAsc("MAX_NUM") ); declares.setServicePrice2(new BigDecimal(0)); for(ProjectRatio pa:paList){ int flag= det.getScore().compareTo(pa.getMaxNum()); if(!Constants.equalsInteger(flag,1)){ if(Objects.nonNull(pa.getRatio())){ BigDecimal servicePrice2=declares.getServicePrice().multiply(pa.getRatio().divide(new BigDecimal(100))); declares.setServicePrice2(servicePrice2.setScale(2, BigDecimal.ROUND_HALF_UP)); } break; } } } } /** * 县区企业审核按钮 * * @param declares 实体对象 */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void areaToExamine(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (!Constants.equalsInteger(user.getType(), UserType.AREA.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非县区用户,不允许操作"); } if (declares.getId() == null || declares.getStatus() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); wrapper.selectAs(Project::getSodType, Declares::getSodType); wrapper.selectAs(Project::getAreaCheck, Declares::getAreaCheck); wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId); wrapper.eq(Project::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getId, declares.getId()); Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper); DeclareHistory history = new DeclareHistory(); areaToExamineJudge(querydec,history ,declares,user); querydec.setEditor(user.getId()); querydec.setEditDate(new Date()); querydec.setStatus(history.getStatus()); querydec.setCheckType(history.getType()); querydec.setCheckInfo(history.getCheckInfo()); //記錄最近一次县区审核理由 querydec.setCheckor(history.getCheckor()); querydec.setRemark(declares.getRemark()); querydec.setCheckDate(history.getCheckDate()); declaresMapper.updateById(querydec); //插入历史记录表 history.setDeclareId(querydec.getId()); history.setCreator(user.getId()); declareHistoryService.create(history); } /** * 县区审核校验 */ public void areaToExamineJudge(Declares querydec,DeclareHistory history,Declares declares,LoginUserInfo user){ if (Objects.isNull(querydec)) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage()); } if (!Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_WAIT.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "无权限审核"); } if (!Constants.equalsInteger(querydec.getAreaCheck(), Constants.ZERO)) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "未开通县区审核,禁止操作"); } history.setCheckor(user.getId()); history.setCheckDate(new Date()); String hisContent; if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())) { //审核通过 history.setStatus(Constants.DeclareStatus.CHECK_PASS.getKey()); history.setType(ProjectRecord.XQ_CHECK_PASS.getKey()); hisContent = ProjectRecord.XQ_CHECK_PASS.getNoteinfo().replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param5}", StringUtils.defaultString(declares.getRemark(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())); } else if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_EDIT.getKey())) { //审核退回 history.setStatus(Constants.DeclareStatus.CHECK_EDIT.getKey()); history.setType(ProjectRecord.XQ_CHECK_EDIT.getKey()); hisContent = ProjectRecord.XQ_CHECK_EDIT.getNoteinfo().replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param5}", StringUtils.defaultString(declares.getRemark(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus())); } else if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_BACK.getKey())) { //审核驳回 history.setStatus(Constants.DeclareStatus.CHECK_BACK.getKey()); history.setType(ProjectRecord.XQ_CHECK_BACK.getKey()); hisContent = ProjectRecord.XQ_CHECK_BACK.getNoteinfo().replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param5}", StringUtils.defaultString(declares.getRemark(), "")); } else { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } if (!Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey())) { if(StringUtils.isEmpty(declares.getRemark())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "审核说明不能为空"); } }else{ } history.setRemark(declares.getRemark()); history.setCheckInfo(hisContent); // declares.setRemark(null); } /** * 分配服务机构保存 * * @param declares 实体对象 */ @Override public void distributionServiceSave(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (declares.getId() == null || declares.getSoId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); wrapper.selectAs(Project::getSodType, Declares::getSodType); wrapper.selectAs(Company::getCityId,Declares::getCityId); wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId); wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); wrapper.eq(Project::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getId, declares.getId()); Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper); DeclareHistory history = new DeclareHistory(); distributionServiceJudge(declares,querydec,history,user); querydec.setEditor(user.getId()); querydec.setEditDate(new Date()); querydec.setStatus(history.getStatus()); querydec.setCheckType(history.getType()); querydec.setCheckInfo(history.getCheckInfo()); querydec.setCheckor(history.getCheckor()); querydec.setCheckDate(history.getCheckDate()); querydec.setSoId(declares.getSoId()); declaresMapper.updateById(querydec); //插入历史记录表 history.setDeclareId(querydec.getId()); history.setCreator(user.getId()); declareHistoryService.create(history); } /** * 分配服务机构保存数据校验 * @param declares * @param querydec * @param history * @param user */ public void distributionServiceJudge(Declares declares,Declares querydec, DeclareHistory history ,LoginUserInfo user){ if(Objects.isNull(querydec)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage()); } if (!(Constants.equalsInteger(user.getType(), UserType.SJ.getKey()) ||Constants.equalsInteger(user.getType(), UserType.SJ_CHILD.getKey()) || Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey()) || Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey()))) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非市局/综合服务单位人员禁止分配"); } if(Constants.equalsInteger(querydec.getSodType(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前用户无权限分配服务机构,禁止该操作!"); } /* if(Constants.equalsInteger(declares.getCityId(),user.getCityId())){ //如果项目不是本城市的,不能操作非本市的企业报名数据 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该企业非管辖范围内数据,不能进行当前操作!"); }*/ if (!( Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey()) || Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey()) || Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SERVING.getKey()) ||Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SO_BACK.getKey()) )) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "状态已流转,不允许操作"); } ProjectSo projectSo = projectSoService.belongToService(querydec, declares.getSoId()); if (Objects.isNull(projectSo)) { throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作"); } if(Constants.equalsInteger(user.getType(), UserType.SJ.getKey())){ if(!Constants.equalsInteger(querydec.getSodType(), Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "市局用户无权限分配服务机构"); } } if((Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())||Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey()))){ if(!Constants.equalsInteger(querydec.getSodType(), Constants.TWO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "综合服务单位无权限分配服务机构"); } } if( Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SERVING.getKey()) ||Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())){ //诊断中再次分配服务商,删除之前服务商上传的数据 DeclareService queryDS=new DeclareService(); queryDS.setType(Constants.ZERO); queryDS.setDeclareId(querydec.getId()); queryDS.setIsdeleted(Constants.ZERO); DeclareService updateDS=new DeclareService(); updateDS.setIsdeleted(Constants.ONE); declareServiceMapper.update(updateDS,new UpdateWrapper<>(queryDS)); } history.setCheckor(user.getId()); history.setCheckDate(new Date()); history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey()); String hisContent = ""; if (Constants.equalsInteger(user.getType(), UserType.SJ.getKey())) { //市局用户 if (querydec.getSoId() != null) { hisContent = ProjectRecord.SJ_RESELECT_SO.getNoteinfo(); history.setType(ProjectRecord.SJ_RESELECT_SO.getKey()); } else { hisContent = ProjectRecord.SJ_SELECT_SO.getNoteinfo(); history.setType(ProjectRecord.SJ_SELECT_SO.getKey()); } } else if (Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey()) || Constants.equalsInteger(user.getType(), UserType.SD_CHILD.getKey())) { //综合服务单位管理员 综合服务单位子账号 if (querydec.getSoId() != null) { hisContent = ProjectRecord.SD_RESELECT_SO.getNoteinfo(); history.setType(ProjectRecord.SD_RESELECT_SO.getKey()); } else { hisContent = ProjectRecord.SD_SELECT_SO.getNoteinfo(); history.setType(ProjectRecord.SD_SELECT_SO.getKey()); } } history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param5}", StringUtils.defaultString(projectSo.getCompanyName(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()))); } /** * 分配给子账号 * * @param declares 实体对象 */ @Override public void distributionChildAccount(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (declares.getProjectId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } //判断当前登陆用户是否可操作改项目的申报记录 if (UserType.SD_ADMIN.getKey() == user.getType()){ distributionSDChildAccount(declares, user); } else if (UserType.SO_ADMIN.getKey() == user.getType()){ distributionSOChildAccount(declares, user); } } /** * * 服务机构分配子账号 * @param declares */ private void distributionSOChildAccount(Declares declares,LoginUserInfo user){ if (declares.getIds() == null || declares.getSoUserId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!"); } if(!Constants.equalsInteger(user.getType(), UserType.SO_ADMIN.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,只有服务机构管理员才能进行该操作!"); } if (StringUtils.isEmpty(declares.getIds())) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,用户为空"); } List ids = Arrays.stream(declares.getIds().split(",")) .map(s->Integer.valueOf(s)) .collect(Collectors.toList()); Declares query = new Declares(); query.setSoId(user.getCompanyId()); query.setProjectId(declares.getProjectId()); List declaresList = findList(query); List collect = declaresList.stream().map(s -> s.getId()).collect(Collectors.toList()); if (!collect.containsAll(ids)){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } // 已分配服务机构 诊断中 boolean safeStatus = declaresList.stream() .filter(s -> ids.contains(s.getId())) .anyMatch(s -> !Arrays.asList( Constants.DeclareStatus.SELECTED_SO.getKey(),Constants.DeclareStatus.SERVING.getKey() ,Constants.DeclareStatus.BACK_SERVER_ING.getKey() ).contains(s.getStatus())); if (safeStatus){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"存在不允许分配子账号状态"); } if (declares.getSoUserId() != null) { //当前分配服务机构子账号(关联system_user表)" Declares update = new Declares(); update.setEditDate(new Date()); update.setEditor(user.getId()); update.setSoUserId(declares.getSoUserId()); UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda() .in(Declares::getId,ids) .eq(Declares::getSoId,user.getCompanyId()) .in(Declares::getStatus,Arrays.asList(Constants.DeclareStatus.SELECTED_SO.getKey(), Constants.DeclareStatus.SERVING.getKey(),Constants.DeclareStatus.BACK_SERVER_ING.getKey())); declaresMapper.update(update,updateWrapper); } } /** * * 综合服务单位分配子账号 * @param declares */ public void distributionSDChildAccount(Declares declares,LoginUserInfo user){ if (declares.getProjectId() == null || declares.getSdUserId() == null || declares.getSoId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!"); } // QueryWrapper wrapper = new QueryWrapper<>(); // wrapper.lambda().eq(Project::getCityId,user.getCityId()); ProjectSo so = new ProjectSo(); so.setType(Constants.ONE); so.setProjectId(declares.getProjectId()); so.setCompanyId(user.getCompanyId()); ProjectSo projectSos = projectSoService.findOne(so); if (Objects.isNull(projectSos)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"无权限操作当前项目"); } ProjectSo projectSo = new ProjectSo(); projectSo.setProjectId(declares.getProjectId()); projectSo.setCompanyId(declares.getSoId()); List list = projectSoService.findList(projectSo); if (CollectionUtils.isEmpty(list)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请按要求选择提交内容!"); } if (Objects.isNull(user)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前无权限"); } if(!Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,只有综合服务单位管理员才能进行该操作!"); } SystemUser systemUser = new SystemUser(); systemUser.setCompanyId(user.getCompanyId()); systemUser.setId(declares.getSdUserId()); systemUser.setType(UserType.SD_CHILD.getKey()); systemUser.setDeleted(Boolean.FALSE); SystemUser one = systemUserService.findOne(systemUser); if (Objects.isNull(one)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该子账号信息不存在!"); } ProjectSo update = new ProjectSo(); update.setId(projectSos.getId()); update.setSdChildId(declares.getSdUserId()); projectSoService.updateById(update); Declares updateDeclares = new Declares(); updateDeclares.setEditor(user.getId()); updateDeclares.setEditDate(new Date()); updateDeclares.setSdUserId(one.getId()); QueryWrapper updateWrapper = new QueryWrapper<>(); updateWrapper.lambda() .eq(Declares::getProjectId,declares.getProjectId()) .eq(Declares::getSoId,declares.getSoId()) .in(Declares::getStatus,Arrays.asList(Constants.DeclareStatus.SELECTED_SO.getKey(), Constants.DeclareStatus.SERVING.getKey(),Constants.DeclareStatus.BACK_SERVER_ING.getKey())); declaresMapper.update(updateDeclares,updateWrapper); } /** * 综合服务单位分配给子账号 * * @param declares 实体对象 */ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void distriZHChildAccount(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (!Constants.equalsInteger(user.getType(), UserType.SD_ADMIN.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非综合服务单位管理员,不允许操作"); } distriChildJudge(declares ,user); DeclareHistory history = new DeclareHistory(); history.setCheckor(user.getId()); history.setCheckDate(new Date()); history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey()); Arrays.stream(declares.getIds().split(",")).forEach(id -> { Declares update = new Declares(); Declares querydc = declaresMapper.selectById(id); String hisContent; if (querydc.getSoId() != null) { history.setType(ProjectRecord.SD_RESELECT_SO.getKey()); hisContent = ProjectRecord.SD_RESELECT_SO.getNoteinfo(); } else { history.setType(ProjectRecord.SD_SELECT_SO.getKey()); hisContent = ProjectRecord.SD_SELECT_SO.getNoteinfo(); } history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()))); update.setEditDate(new Date()); update.setEditor(user.getId()); update.setId(Integer.valueOf(id)); update.setSdUserId(declares.getSdUserId()); update.setSoId(declares.getSoId()); update.setStatus(history.getStatus()); update.setCheckType(history.getType()); update.setCheckInfo(history.getCheckInfo()); update.setCheckor(history.getCheckor()); update.setCheckDate(history.getCheckDate()); declaresMapper.updateById(update); //插入历史记录表 history.setDeclareId(update.getId()); history.setCreator(user.getId()); declareHistoryService.create(history); }); } /** * 服务机构分配给子账号 * * @param declares 实体对象 */ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void distriServiceChildAccount(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (!Constants.equalsInteger(user.getType(), UserType.SO_ADMIN.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非服务机构管理员,禁止操作"); } if (StringUtils.isEmpty(declares.getIds()) || declares.getProjectId() == null || declares.getSoUserId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } SystemUser systemUser = systemUserMapper.selectById(declares.getSoUserId()); if (systemUser == null || !Constants.equalsInteger(systemUser.getType(), UserType.SO_CHILD.getKey())||!Constants.equalsInteger(user.getCityId(), systemUser.getCityId())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户非服务机构子账号/非管辖范围内数据,禁止分配"); } Arrays.stream(declares.getIds().split(",")).forEach(id -> { Declares update = new Declares(); update.setEditDate(new Date()); update.setEditor(user.getId()); update.setId(Integer.valueOf(id)); update.setSdUserId(declares.getSoUserId()); declaresMapper.updateById(update); }); } /** * 综合服务单位分配账号 数据校验 */ public void distriChildJudge(Declares declares,LoginUserInfo user) { if (declares.getSdUserId() == null || declares.getSoId() == null || StringUtils.isEmpty(declares.getIds()) || declares.getProjectId() == null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } SystemUser systemUser = systemUserMapper.selectById(declares.getSdUserId()); if (systemUser == null || !Constants.equalsInteger(systemUser.getType(), UserType.SD_CHILD.getKey())||!Constants.equalsInteger(user.getCityId(), systemUser.getCityId())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "用户非综合单位子管理员/非管辖范围内数据,禁止分配"); } ProjectSo projectSo = projectSoService.belongToService(declares,declares.getSoId()); if (Objects.isNull(projectSo)) { throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "项目没有关联该服务机构,不允许操作"); } String[] arr = declares.getIds().split(","); for (int i = 0; i < arr.length; i++) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); wrapper.selectAs(Company::getName, Declares::getCompanyName); wrapper.leftJoin(Company.class, Company::getId, Declares::getCompanyId); wrapper.eq(Company::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getId, arr[0]); Declares querydec = declareJoinMapper.selectJoinOne(Declares.class, wrapper); if (!Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.CHECK_PASS.getKey()) || !Constants.equalsInteger(querydec.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), querydec.getCompanyName() + ":状态已流转,不允许操作"); } } } /** * 服务机构确认/拒绝服务 * * @param declares 实体对象 */ @Override public void confirmService(Declares declares) throws BusinessException { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (declares.getId()==null||declares.getStatus()==null) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Declares.class); wrapper.selectAs(Project::getSodType, Declares::getSodType); wrapper.leftJoin(Project.class, Project::getId, Declares::getProjectId); wrapper.eq(Project::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getIsdeleted, Constants.ZERO); wrapper.eq(Declares::getId, declares.getId()); Declares querydc = declareJoinMapper.selectJoinOne(Declares.class, wrapper); DeclareHistory history = new DeclareHistory(); confirmServiceJudge(declares, user, querydc , history ); querydc.setEditDate(new Date()); querydc.setEditor(user.getId()); querydc.setId(declares.getId()); querydc.setSdUserId(declares.getSdUserId()); querydc.setSoId(declares.getSoId()); querydc.setStatus(history.getStatus()); querydc.setCheckType(history.getType()); querydc.setCheckInfo(history.getCheckInfo()); querydc.setCheckor(history.getCheckor()); querydc.setCheckDate(history.getCheckDate()); declaresMapper.updateById(querydc); //插入历史记录表 history.setDeclareId(declares.getId()); history.setCreator(user.getId()); declareHistoryService.create(history); } /** * 服务机构确认/拒绝服务 数据校验 * @param declares * @param user * @param querydc * @param history */ public void confirmServiceJudge(Declares declares,LoginUserInfo user,Declares querydc, DeclareHistory history ){ if(Objects.isNull(querydc)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage()); } if(Constants.equalsInteger(declares.getStatus(),Constants.DeclareStatus.SO_BACK.getKey())){ if(StringUtils.isEmpty(declares.getRemark())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } } if (!Constants.equalsInteger(querydc.getStatus(), Constants.DeclareStatus.WAIT_SO_COMFIRM.getKey())) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "流程已中转,无法确认/拒绝服务"); } if (!(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey() || Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey() ) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "无权限操作"); } if(!(Constants.equalsInteger(querydc.getSoId(),user.getCompanyId()) ||Constants.equalsInteger(querydc.getSoUserId(),user.getId()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,非权限内数据,不能进行当前操作!"); } // if(!Constants.equalsInteger(querydc.getSodType(),Constants.ZERO)){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未开启双选,禁止操作!"); // } String hisContent=""; if (Constants.equalsInteger(declares.getStatus(), Constants.DeclareStatus.SELECTED_SO.getKey())) { history.setStatus(Constants.DeclareStatus.SELECTED_SO.getKey()); history.setType(ProjectRecord.SO_PASS.getKey()); history.setRemark(declares.getRemark()); hisContent= ProjectRecord.SO_PASS.getNoteinfo(); } else { //拒绝服务原因checkinfo if (StringUtils.isBlank(declares.getRemark())) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请填写拒绝原因"); } history.setStatus(Constants.DeclareStatus.SO_BACK.getKey()); history.setType(ProjectRecord.SO_BACK.getKey()); history.setRemark(declares.getRemark()); hisContent= ProjectRecord.SO_BACK.getNoteinfo(); } history.setCheckInfo(hisContent.replace("${param2}", UserType.getName(user.getType())) .replace("${param3}", StringUtils.defaultString(user.getUsername(), "")) .replace("${param4}", Constants.DeclareStatus.getNoteinfo(history.getStatus()))); history.setCheckor(user.getId()); history.setCheckDate(new Date()); } public void saveDeclareHistory(DeclareHistory declareHistory){ //审核记录表 LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); declareHistory.setCreateDate(new Date()); declareHistory.setCreator(user.getId()); declareHistory.setIsdeleted(Constants.ZERO); declareHistory.setCheckInfo(declareHistory.getCheckInfo()); declareHistory.setDeclareId(declareHistory.getId()); declareHistory.setCheckDate(new Date()); declareHistory.setCheckor(user.getId()); declareHistory.setType(declareHistory.getStatus()); declareHistory.setStatus(declareHistory.getStatus()); declareHistoryMapper.insert(declareHistory); } @Override public List exportExcel(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Declares declares = pageWrap.getModel(); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()) { //县区角色 查看企业用户,除保存之外的所有数据 queryWrapper.eq(user.getAreaId() != null, Company::getAreaId, user.getAreaId()) .eq(Company::getType, Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) { //市经信局/ 查看当前市局所有的企业 queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey()) { //综合服务单位 查看当前所有的企业 queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); } else if (Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey()) { //综合服务单位子账号 queryWrapper.eq(user.getCityId() != null, Company::getCityId, user.getCityId()); queryWrapper.eq(Declares::getSdUserId, user.getId());//查询子账号的数据 }else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey()){ //专家 queryWrapper.exists("select de.id from declare_expert de where de.isdeleted=0 and de.expert_id="+user.getId()+" and t.id=de.declare_id"+(declares.getExpertStatus()!=null?" and de.status="+ declares.getExpertStatus():"")); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey()){ //服务机构管理员 人员 queryWrapper.eq(Declares::getSoId, user.getCompanyId()); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey()){ //服务机构管子管理 人员 queryWrapper.eq(Declares::getSoUserId, user.getId());//查询子账号的数据 } queryWrapper.selectAll(Declares.class); queryWrapper.selectAs(Company::getName,Declares::getCompanyName); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Company::getCityId,Declares::getCityId); queryWrapper.selectAs(Company::getCreditCode,Declares::getCreditCode); queryWrapper.selectAs(Project::getName,Declares::getProjectName); queryWrapper.selectAs(Project::getSodType,Declares::getSodType); queryWrapper.selectAs(Project::getEdType,Declares::getEdType); queryWrapper.selectAs(Project::getAreaCheck,Declares::getAreaCheck); queryWrapper.selectAs(DeclareAnswer::getScore,Declares::getDAScore); queryWrapper.select("(select ps.PRICE from project_so ps where ps.PROJECT_ID = t.project_id and ps.isdeleted=0 and ps.COMPANY_ID=t.SO_ID limit 1) as servicePrice"); queryWrapper.select("(select ps.score from declare_expert ps where ps.declare_id = t.id and ps.isdeleted=0 limit 1) as expertScore"); queryWrapper.select("s.REALNAME as realName,s2.REALNAME as realServiceName"); queryWrapper.selectAs(Company::getAreaId,Declares::getAreaId); queryWrapper.selectAs(Labels::getName,Declares::getIndusrtyName); queryWrapper.leftJoin(Company.class,Company::getId,Declares::getCompanyId);//查询企业名称 queryWrapper.leftJoin(Labels.class,Labels::getId,Company::getIndustryId);//查询企业名称 queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId);//查询项目信息 queryWrapper.leftJoin(DeclareAnswer.class,DeclareAnswer::getId,Declares::getAnswerId);//查询项目信息 queryWrapper.leftJoin("company so on so.id=t.so_id"); queryWrapper.select("so.name as serviceName"); queryWrapper.leftJoin("system_user s on s.id = t.SD_USER_ID and s.DELETED=0");//查询分配单位子账号 queryWrapper.leftJoin("system_user s2 on s2.id = t.SO_USER_ID and s2.DELETED=0");//查询服务机构子账号 queryWrapper.eq(Objects.nonNull(declares.getProjectId()),Declares::getProjectId, declares.getProjectId()).eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.notIn(Declares::getStatus, Arrays.asList(Constants.DeclareStatus.EDITING.getKey())); queryWrapper.eq(Declares::getIsdeleted, Constants.ZERO); queryWrapper.like(StringUtils.isNotBlank(declares.getProjectName()), Project::getName, declares.getProjectName()); queryWrapper.like(StringUtils.isNotBlank(declares.getCompanyName()), Company::getName, declares.getCompanyName()); queryWrapper.eq(declares.getStatus() != null, Declares::getStatus, declares.getStatus()); queryWrapper.eq(declares.getSoId() != null, Declares::getSoId, declares.getSoId()); queryWrapper.eq(declares.getCityId() != null, "so.CITY_ID", declares.getCityId()); queryWrapper.eq(declares.getAreaId() != null, "so.AREA_ID", declares.getAreaId()); queryWrapper.orderByDesc(Declares::getCreateDate); List result = declaresJoinMapper.selectJoinList( Declares.class, queryWrapper); if(result!=null && result.size() > 0){ for(int i=0;i(declareExpert) .select("* ,(select s.REALNAME from system_user s where s.id = declare_expert.EXPERT_ID and s.DELETED=0) as realZJName ") .eq("ISDELETED",0) .last("limit 1") ); if(Objects.nonNull(resultde)){ ds.setRealZJName(resultde.getRealZJName());//专家姓名 ds.setExpertScore(resultde.getScore()); } } @Override public PageData findServiceCompanyStatisticsVOPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select("SO_ID as soId," + "(select NAME from company where company.id=declares.SO_ID) as companyName," + "count(id) as companyNum," + "sum(IF(STATUS = 7, 1, 0)) as hasDiagnosisNum," + "sum(IF(STATUS > 7, 1, 0)) as finishNum ") .lambda() .isNotNull(Declares::getSoId) .ge(Declares::getStatus,7) .groupBy(Declares::getSoId); IPage iPage = declaresMapper.selectMapsPage(page, wrapper); List soId1 = (List) iPage.getRecords().stream() .map(s -> MapUtils.getInteger((Map) s, "soId")) .collect(Collectors.toList()); iPage.getRecords().forEach(s->{ Map map = (Map) s; Integer soId = MapUtils.getInteger(map, "soId"); ServiceCompanyStatisticsVO vo = new ServiceCompanyStatisticsVO(); vo.setCompanyNum(MapUtils.getInteger(map, "companyNum")); vo.setCompanyName(MapUtils.getInteger(map, "companyName")); vo.setSoId(MapUtils.getInteger(map, "soId")); vo.setHasDiagnosisNum(MapUtils.getInteger(map, "hasDiagnosisNum")); vo.setFinishNum(MapUtils.getInteger(map, "finishNum")); BigDecimal divide = new BigDecimal(MapUtils.getInteger(map, "finishNum")) .divide(new BigDecimal(MapUtils.getInteger(map, "companyNum")), 2, RoundingMode.HALF_UP); vo.setFinishRate(divide); MPJLambdaWrapper declareServiceQuery = new MPJLambdaWrapper<>(); declareServiceQuery.select("DECLARE_ID,count(id) as num"); declareServiceQuery .leftJoin(DeclareService.class,DeclareService::getDeclareId,Declares::getId) .eq(Declares::getSoId,soId) .eq(DeclareService::getIsdeleted,Constants.ZERO) .ne(DeclareService::getStatus,Constants.ZERO) .groupBy(DeclareService::getDeclareId); List> maps = declareServiceMapper.selectMaps(declareServiceQuery); Map num = maps.stream() .map(m -> MapUtils.getInteger(m, "num")) .collect(Collectors.groupingBy(m -> m, Collectors.counting())); List collect1 = num.entrySet().stream().map(m -> { ServiceCompanyStatisticsVO.DiagnosisNum diagnosisNum = new ServiceCompanyStatisticsVO.DiagnosisNum(); diagnosisNum.setTitle(m.getKey().toString()); diagnosisNum.setNum(m.getValue().intValue()); return diagnosisNum; }).collect(Collectors.toList()); vo.setDiagnosisNumList(collect1); // vo.setDiagnosisTotalMany(); // vo.setDiagnosisReportNumList(); }); return null; } }