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<Project> deleteWrapper = new UpdateWrapper<>(project);
|
projectMapper.delete(deleteWrapper);
|
}
|
|
@Transactional
|
@Override
|
public void deleteByIdInBatch(List<Integer> 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<Project> 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<Project> 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<Project> 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<Project> 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<Project> findList(Project project) {
|
QueryWrapper<Project> wrapper = new QueryWrapper<>(project);
|
List<Project> list = projectMapper.selectList(wrapper);
|
initProjectListStatus(list);
|
return list;
|
}
|
|
|
@Override
|
public List<Project> findList(QueryWrapper<Project> wrapper) {
|
|
List<Project> list = projectMapper.selectList(wrapper);
|
initProjectListStatus(list);
|
return list;
|
}
|
|
private void initProjectListStatus(List<Project> 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<Project> findPage(PageWrap<Project> pageWrap) {
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
IPage<Project> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<Project> 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<Areas> list = areasService.findByParentId(Constants.ONE,pageWrap.getModel().getProvinceId());
|
List<Integer> collect = list.stream().map(Areas::getId).collect(Collectors.toList());
|
queryWrapper.lambda().in(Project::getCityId, collect);
|
}
|
queryWrapper.lambda().orderByDesc(Project::getSortnum,Project::getCreateDate);
|
|
IPage<Project> result = projectMapper.selectPage(page, queryWrapper);
|
if(result !=null){
|
initProjectListStatus(result.getRecords());
|
}
|
return PageData.from(result);
|
}
|
@Override
|
public PageData<Declares> pageDeclared(PageWrap<com.doumee.dao.business.model.Project> pageWrap){
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
if(Constants.formatIntegerNum(user.getType()) != UserType.COMPANY.getKey()){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED );
|
}
|
IPage<Declares> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Declares> 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<Declares> 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<Project> wrapper = new QueryWrapper<>(project);
|
return projectMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public void updateSJchildIdById(Project project) {
|
UpdateWrapper<Project> wrapper = new UpdateWrapper<>();
|
wrapper.lambda().set(Project::getSjChildId,null)
|
.eq(Project::getId,project.getId());
|
projectMapper.update(null,wrapper);
|
}
|
}
|