package com.doumee.service.business.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.MultiFile; import com.doumee.core.utils.Constants.UserType; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.DeclaresJoinMapper; import com.doumee.dao.business.ProjectJoinMapper; import com.doumee.dao.business.ProjectMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.AreasService; import com.doumee.service.business.MultifileService; import com.doumee.service.business.ProjectService; 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.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.extern.java.Log; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 项目信息表Service实现 * @author 江蹄蹄 * @date 2023/02/15 08:55 */ @Service public class ProjectServiceImpl implements ProjectService { @Autowired private ProjectMapper projectMapper; @Autowired private MultifileService multifileService; @Autowired private AreasService areasService; @Autowired private ProjectJoinMapper projectJoinMapper; @Autowired private DeclaresJoinMapper declaresJoinMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private SystemUserMapper systemUserMapper; @Override public Integer create(Project project) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!(Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey() ||Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey() ||Constants.formatIntegerNum(user.getType()) == UserType.SYSTEM.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED); } if(Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey() ){ //如果是市局管理员账号,默认当前关联自己 project.setSjId(user.getId()); } if(Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey() ){ //如果是市局子账号,默认当前关联自己 project.setSjId(user.getParentId()); project.setSjChildId(user.getParentId()); } if( Constants.formatIntegerNum(user.getType()) == UserType.SYSTEM.getKey() ){ if(project.getSjId() == null){ //管理员账号必须选择关联的市局信息 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按照要求填写提交信息!!"); } } if(StringUtils.isBlank(project.getImgurl()) || StringUtils.isBlank(project.getName()) || project.getCityId() == null || project.getStartDate() == null || project.getEndDate() == null // || Constants.formatIntegerNum(project.getServiceLimt())<1 ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按照要求填写提交信息!!"); } project.setServiceLimt(Constants.formatIntegerNum(project.getServiceLimt())<1?1:project.getServiceLimt()); project.setEdType(Constants.formatIntegerNum(project.getEdType())); project.setScoreType(Constants.formatIntegerNum(project.getScoreType())); project.setSodType(Constants.formatIntegerNum(project.getSodType())); project.setAreaCheck(Constants.formatIntegerNum(project.getAreaCheck())); project.setCreateDate(DateUtil.getCurrentDate()); project.setIsdeleted(Constants.ZERO); project.setCreator(user.getId()); projectMapper.insert(project); if(StringUtils.isNotBlank(project.getImgurl())){ //如果有图标 Multifile file = new Multifile(); file.setCreateDate(project.getCreateDate()); file.setIsdeleted(Constants.ZERO); file.setObjId(project.getId()); file.setObjType(Constants.MultiFile.BUSINESS_PROURL.getKey()); file.setFileurl(project.getImgurl()); file.setType(Constants.ZERO); multifileService.create(file); } return project.getId(); } @Override public void deleteById(Integer id) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); deleteByModel(id,user); } public void initProjectStatus(Project model,String path){ if(model == null){ return; } model.setStatus(Constants.ZERO); long now =System.currentTimeMillis(); if(model.getEndDate() !=null && model.getEndDate().getTime() <= now){ model.setStatus(Constants.TWO); }else if(model.getStartDate() !=null && model.getStartDate().getTime() <= now){ if(model.getEndDate() !=null && model.getEndDate().getTime() > now){ model.setStatus(Constants.ONE); } } Multifile f = new Multifile(); f.setObjType(MultiFile.BUSINESS_PROURL.getKey()); f.setObjId(model.getId()); f.setIsdeleted(Constants.ZERO); Multifile file = multifileService.findOne(f); if(file !=null && StringUtils.isNotBlank(file.getFileurl())){ model.setImgurl(file.getFileurl()); model.setImgurlfull(path+file.getFileurl()); } if(model.getCityId()!=null){ Areas a = areasService.findById(model.getCityId(),Constants.ONE); if(a != null){ model.setCityName(a.getName()); model.setProvinceId(a.getProvinceId()); model.setProvinceName(a.getProvinceName()); } } } private void deleteByModel(Integer id,LoginUserInfo user ) { Project model = findById(id); if(model == null ){ return; // throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "项目信息已删除!"); } if((Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey() ||Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()) &&!Constants.equalsObject(model.getSjId(),user.getId()) ){ //市局只能修改关联自己的项目信息 return; // throw new BusinessException(ResponseStatus.NOT_ALLOWED); } model.setIsdeleted(Constants.ONE); model.setEditor(user.getId()); model.setEditDate(DateUtil.getCurrentDate()); projectMapper.updateById(model); } @Override public void delete(Project project) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(project); projectMapper.delete(deleteWrapper); } @Transactional @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); for(Integer id : ids){ deleteByModel(id,user); } } @Override public void updateById(Project project) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); //删除对项目所属城市校验 项目一旦创建所属城市不允许 if(StringUtils.isBlank(project.getName()) || project.getId() == null || project.getStartDate() == null || project.getEndDate() == null || Constants.formatIntegerNum(project.getServiceLimt()) < 1 ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按照要求填写提交信息!!"); } Project model = findById(project.getId()); if(model == null || Constants.formatIntegerNum(model.getIsdeleted()) == Constants.ONE){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该记录不存,请刷新重试!!"); } if(Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey() &&!Constants.equalsObject(model.getSjId(),user.getId())){ //如果是市局管理员账号,只能修改关联自己的项目信息 throw new BusinessException(ResponseStatus.NOT_ALLOWED); } if(Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey() &&!Constants.equalsObject(model.getSjId(),user.getParentId())){ //如果是市局子账号,只能修改关联自己的项目信息 throw new BusinessException(ResponseStatus.NOT_ALLOWED); } project.setEdType(Constants.formatIntegerNum(project.getEdType())); project.setScoreType(Constants.formatIntegerNum(project.getScoreType())); project.setSodType(Constants.formatIntegerNum(project.getSodType())); project.setAreaCheck(Constants.formatIntegerNum(project.getAreaCheck())); project.setEditDate(DateUtil.getCurrentDate()); project.setIsdeleted(Constants.ZERO); project.setEditor(user.getId()); project.setCityId(null); if(StringUtils.isNotBlank(project.getImgurl())){ //如果有图标 Multifile file = new Multifile(); file.setObjId(project.getId()); file.setObjType(Constants.MultiFile.BUSINESS_PROURL.getKey()); multifileService.delete(file); file.setCreateDate(project.getCreateDate()); file.setIsdeleted(Constants.ZERO); file.setFileurl(project.getImgurl()); file.setType(Constants.ZERO); multifileService.create(file); } projectMapper.updateById(project); } /** * 市局分配子账号 * @param project */ @Override public void distributeSjChild(Project project) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); //删除对项目所属城市校验 项目一旦创建所属城市不允许 if( project.getId() == null || project.getSjChildId() == null ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请按照要求填写提交信息!!"); } Project model = findById(project.getId()); if(model == null || Constants.formatIntegerNum(model.getIsdeleted()) == Constants.ONE){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该记录不存在,请刷新重试!!"); } if(Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey() &&!Constants.equalsObject(model.getSjId(),user.getId())){ //如果是市局管理员账号,只能操作关联自己的项目信息 throw new BusinessException(ResponseStatus.NOT_ALLOWED); } //查询子账号信息 SystemUser childUser = systemUserMapper.selectById(project.getSjChildId()); if(childUser == null || childUser.getDeleted() || !Constants.equalsInteger(childUser.getType(), UserType.SJ_CHILD.getKey())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该子账号信息不存在,请刷新重试!!"); } if(Constants.equalsInteger(childUser.getStatus(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该子账号信息已禁用!"); } if(!Constants.equalsInteger(childUser.getParentId(),model.getSjId())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,项目关联市局下无该子账号!"); } Project updateModel = new Project(); updateModel.setId(project.getId()); updateModel.setSjChildId(project.getSjChildId()); updateModel.setEditDate(DateUtil.getCurrentDate()); updateModel.setEditor(user.getId()); //分配市局子账号 projectMapper.updateById(updateModel); } @Override public void updateByIdInBatch(List projects) { if (CollectionUtils.isEmpty(projects)) { return; } for (Project project: projects) { this.updateById(project); } } @Override public Project findById(Integer id) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(Project.class); wrapper.select(" (select count(1) from project_label a where a.PROJECT_ID=t.ID and a.isdeleted=0) as labelCount"); wrapper.eq(Project::getId,id); wrapper.leftJoin(SystemUser.class,SystemUser::getId,Project::getSjId); wrapper.leftJoin(SystemUser.class,SystemUser::getId,Project::getSjChildId); wrapper.leftJoin(Areas.class,Areas::getId,Project::getCityId); wrapper.select("t1.realname as sjUserName "); wrapper.select("t2.realname as sjChildUserName "); wrapper.selectAs(Areas::getParentId,Project::getProvinceId); wrapper.last(" limit 1"); Project model = projectJoinMapper.selectJoinOne(Project.class, wrapper); /* QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.select("*" + " ,(select a.PARENT_ID from areas a where a.id=project.CITY_ID limit 1) as provinceId " + " ,(select count(1) from project_label a where a.PROJECT_ID=project.ID and a.isdeleted=0) as labelCount "); Project model = projectMapper.selectOne(queryWrapper .eq("id",id).last(" limit 1") );*/ if(model == null || Constants.formatIntegerNum(model.getIsdeleted()) == Constants.ONE){ return 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(); initProjectStatus(model,path); return model; } @Override public Project findOne(Project project) { QueryWrapper wrapper = new QueryWrapper<>(project); Project model =projectMapper.selectOne(wrapper.last(" limit 1")); String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode(); initProjectStatus(model,path); return model; } @Override public List findList(Project project) { QueryWrapper wrapper = new QueryWrapper<>(project); List list = projectMapper.selectList(wrapper); initProjectListStatus(list); return list; } @Override public List findList(QueryWrapper wrapper) { List list = projectMapper.selectList(wrapper); initProjectListStatus(list); return list; } private void initProjectListStatus(List list) { if(list == null || list.size()==0){ return; } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode(); for(Project model :list){ initProjectStatus(model,path); } } @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Project::getId, pageWrap.getModel().getId()); } //--------------------------不同角色统计报名数量查询对象--------------------start---------------------- if(Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey() ){ //如果是综合服务单位子账号, 服务企业数量,展示分配给自己的数量 queryWrapper.select("*,(select count(t1.id) from declares t1 where t1.status!=0 and t1.isdeleted=0 " + "AND t1.PROJECT_ID = project.id AND t1.SD_USER_ID = "+user.getId()+") as serverCompanyNum " ); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey() ){ //如果是服务机构总账号, 展示项目分配给当前服务机构的服务企业数量 queryWrapper.select("*,(select count(t1.id) from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and t1.so_id="+user.getCompanyId()+") as serverCompanyNum" ); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey() ){ //如果是服务机构子账号, 服务企业数量,展示分配给自己的数量 queryWrapper.select("*,(select count(t1.id) from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and t1.so_id="+user.getCompanyId()+" and t1.so_user_id="+user.getId()+") as serverCompanyNum" ); }else if(Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey() ){ //如果是专家账号, 展示分配给自己的数量 queryWrapper.select("*,(select count(t1.id) from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and exists(select t2.id from declare_expert t2 where t2.isdeleted=0 and t2.declare_id=t1.id and t2.expert_id="+user.getId()+")) as serverCompanyNum"); }else if(Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey() ){ //如果是县区账号,统计所属市局关联的项目,并且报名企业区域相同的数量 queryWrapper.select("*,(select count(t1.id) from declares t1 left join company t2 on t1.company_id=t2.id where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and t2.area_id="+user.getAreaId()+") as serverCompanyNum" ); }else if(Constants.formatIntegerNum(user.getType()) == UserType.COMPANY.getKey()){ //如果是企业用户,不查询服务企业数量,但只显示未报名的项目 queryWrapper.notExists(" select d.id from declares d where d.isdeleted=0 and d.project_id=project.id and d.company_id="+user.getCompanyId() ); }else{ //其他类型查询全部企业报名数量 queryWrapper.select("*,(select count(t1.id) from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id) as serverCompanyNum,(select title from questionnaire q where q.id = questionnaire_id) as questionnaireTitle," + "(select REALNAME from system_user su where su.id = SJ_CHILD_ID) as sjChildUserName ," + "(select MOBILE from system_user su where su.id = SJ_CHILD_ID) as sjChildUserMobile," + " (select USERNAME from system_user su where su.id = SJ_ID) as sjUserName" ); } //--------------------------不同角色统计报名数量查询对象--------------------end---------------------- //--------------------------不同角色项目筛选条件--------------------start---------------------- if( Constants.formatIntegerNum(user.getType()) == UserType.COMPANY.getKey() ){ //如果是企业账号,只能看该城市下,并且报名未截止的数据 pageWrap.getModel().setCityId(user.getCityId()); queryWrapper.notExists(" select d.id from declares d where d.isdeleted=0 and d.project_id=project.id and d.company_id="+user.getCompanyId() ); //报名截止时间之前的项目信息 queryWrapper.lambda().ge( Project::getEndDate, DateUtil.getCurrentDate()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.EXPERT.getKey() ){ //如果专家账号,查询分配给自己的项目信息 queryWrapper.exists("select de.id from declare_expert de left join declares ds on ds.id=de.declare_id where de.isdeleted=0 and ds.project_id = project.id and de.expert_id="+user.getId()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey() ){ //如果是县区用户 ,查询所属市局的全部项目信息 pageWrap.getModel().setSjId(user.getParentId()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey() ){ //如果市局 ,所属市局的项目信息 pageWrap.getModel().setSjId(user.getId()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.SJ_CHILD.getKey() ){ //如果市局账号子账号 ,所属市局的项目信息 pageWrap.getModel().setSjId(user.getParentId()); queryWrapper.exists("SELECT t1.id FROM project_permisson t1 WHERE t1.PROJECT_ID = project.id and t1.isdeleted=0 AND t1.OBJ_ID = "+user.getId()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey() ){ //如果综合服务单位子账号 ,同所属综合服务单位 queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=project.id and d.company_id="+user.getCompanyId()); }else if( Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey() ){ //如果综合服务单位账号 queryWrapper.exists(" select d.id from project_so d where d.type=1 and d.isdeleted=0 and d.project_id=project.id and d.company_id="+user.getCompanyId() ); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey() ){ //如果是服务机构总账号, 展示所有分配给自己所属服务机构的项目数据 queryWrapper.exists("select t1.id from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and t1.so_id="+user.getCompanyId()); }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey() ){ //如果是服务机构子账号, 展示所有分配给自己所属服务机构的项目数据 queryWrapper.exists("select t1.id from declares t1 where t1.status!=0 and t1.isdeleted=0 and t1.project_id = project.id and t1.so_id="+user.getCompanyId()+" and t1.so_user_id="+user.getId()); } //--------------------------不同角色项目筛选条件--------------------end---------------------- if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Project::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Project::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Project::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Project::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Project::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Project::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } queryWrapper.lambda().eq(Project::getIsdeleted, Constants.ZERO); if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().like(Project::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Project::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getStartDate() != null) { queryWrapper.lambda().ge(Project::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())); queryWrapper.lambda().le(Project::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate())); } if (pageWrap.getModel().getEndDate() != null) { queryWrapper.lambda().ge(Project::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())); queryWrapper.lambda().le(Project::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate())); } if (pageWrap.getModel().getSodType() != null) { queryWrapper.lambda().eq(Project::getSodType, pageWrap.getModel().getSodType()); } if (pageWrap.getModel().getEdType() != null) { queryWrapper.lambda().eq(Project::getEdType, pageWrap.getModel().getEdType()); } if (pageWrap.getModel().getScoreType() != null) { queryWrapper.lambda().eq(Project::getScoreType, pageWrap.getModel().getScoreType()); } if (pageWrap.getModel().getAreaCheck() != null) { queryWrapper.lambda().eq(Project::getAreaCheck, pageWrap.getModel().getAreaCheck()); } if (pageWrap.getModel().getCheckReq() != null) { queryWrapper.lambda().eq(Project::getCheckReq, pageWrap.getModel().getCheckReq()); } if (pageWrap.getModel().getFileReq() != null) { queryWrapper.lambda().eq(Project::getFileReq, pageWrap.getModel().getFileReq()); } if (pageWrap.getModel().getServiceReq() != null) { queryWrapper.lambda().eq(Project::getServiceReq, pageWrap.getModel().getServiceReq()); } if (pageWrap.getModel().getQuestionnaireId() != null) { queryWrapper.lambda().eq(Project::getQuestionnaireId, pageWrap.getModel().getQuestionnaireId()); } if (pageWrap.getModel().getCityId() == null && pageWrap.getModel().getProvinceId() != null) { queryWrapper.lambda().exists("select 1 from areas aa where aa.parent_id="+pageWrap.getModel().getProvinceId()+" and aa.id=project.city_id"); } if (pageWrap.getModel().getContent() != null) { queryWrapper.lambda().eq(Project::getContent, pageWrap.getModel().getContent()); } if (pageWrap.getModel().getStatus() != null) { if( pageWrap.getModel().getStatus().intValue() == Constants.ZERO){ //未开始 queryWrapper.lambda().ge(Project::getStartDate,DateUtil.getCurrentDate()); }else if( pageWrap.getModel().getStatus().intValue() == Constants.ONE){ //进行中 queryWrapper.lambda().le(Project::getStartDate,DateUtil.getCurrentDate()); queryWrapper.lambda().ge(Project::getEndDate,DateUtil.getCurrentDate()); } else if( pageWrap.getModel().getStatus().intValue() == Constants.TWO){ //已结束 queryWrapper.lambda().le(Project::getEndDate,DateUtil.getCurrentDate()); } } if (pageWrap.getModel().getServiceLimt() != null) { queryWrapper.lambda().eq(Project::getServiceLimt, pageWrap.getModel().getServiceLimt()); } if (pageWrap.getModel().getCityId() != null) { queryWrapper.lambda().eq(Project::getCityId, pageWrap.getModel().getCityId()); } if (pageWrap.getModel().getProvinceId() != null && pageWrap.getModel().getCityId() == null){ Areas areas = new Areas(); areas.setParentId(pageWrap.getModel().getProvinceId()); List list = areasService.findByParentId(Constants.ONE,pageWrap.getModel().getProvinceId()); List collect = list.stream().map(Areas::getId).collect(Collectors.toList()); queryWrapper.lambda().in(Project::getCityId, collect); } queryWrapper.lambda().orderByDesc(Project::getSortnum,Project::getCreateDate); IPage result = projectMapper.selectPage(page, queryWrapper); if(result !=null){ initProjectListStatus(result.getRecords()); } return PageData.from(result); } @Override public PageData pageDeclared(PageWrap pageWrap){ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.formatIntegerNum(user.getType()) != UserType.COMPANY.getKey()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED ); } IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); //当前企业报名的 queryWrapper.leftJoin(Project.class,Project::getId,Declares::getProjectId); queryWrapper.leftJoin(Areas.class,Areas::getId,Project::getCityId); queryWrapper.eq(Declares::getCompanyId, user.getCompanyId()); queryWrapper.eq(Declares::getIsdeleted,Constants.ZERO); queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getDeclareStatus()),Declares::getStatus,pageWrap.getModel().getDeclareStatus()); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Project::getName,pageWrap.getModel().getName()); queryWrapper.selectAll(Declares.class); queryWrapper.selectAs(Project::getName, Declares::getProjectName); queryWrapper.selectAs(Project::getStartDate, Declares::getStartDate); queryWrapper.selectAs(Project::getSodType, Declares::getSodType); // queryWrapper.selectAs(Project::getImgurl, Declares::getImgurl); queryWrapper.selectAs(Project::getEndDate, Declares::getEndDate); queryWrapper.selectAs(Project::getSodType, Declares::getSodType); queryWrapper.selectAs(Areas::getName, Declares::getCityName); queryWrapper.orderByDesc(Declares::getCreateDate); IPage result = declaresJoinMapper.selectJoinPage(page,Declares.class, queryWrapper); if(result!=null){ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.PROJECT_FILE).getCode(); for(Declares model :result.getRecords()){ model.setSodType(Constants.formatIntegerNum(model.getSodType())); Multifile f = new Multifile(); f.setObjType(MultiFile.BUSINESS_PROURL.getKey()); f.setObjId(model.getProjectId()); f.setIsdeleted(Constants.ZERO); Multifile file = multifileService.findOne(f); if(file !=null && StringUtils.isNotBlank(file.getFileurl())){ model.setImgurl(file.getFileurl()); model.setImgurlfull(path+file.getFileurl()); } } } return PageData.from(result); } @Override public long count(Project project) { QueryWrapper wrapper = new QueryWrapper<>(project); return projectMapper.selectCount(wrapper); } @Override public void updateSJchildIdById(Project project) { UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.lambda().set(Project::getSjChildId,null) .eq(Project::getId,project.getId()); projectMapper.update(null,wrapper); } }