123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755 |
- package cn.cslg.pas.service.business;
- import cn.cslg.pas.common.dto.ClientDTO;
- import cn.cslg.pas.common.dto.business.PatentDigProjectDTO;
- import cn.cslg.pas.common.dto.business.PatentDigProjectUpdateDTO;
- import cn.cslg.pas.common.dto.business.ProjectEventDTO;
- import cn.cslg.pas.common.model.cronModel.*;
- import cn.cslg.pas.common.model.request.GroupRequest;
- import cn.cslg.pas.common.model.request.QueryRequest;
- import cn.cslg.pas.common.model.request.StringGroupRequest;
- import cn.cslg.pas.common.model.request.StringRequest;
- import cn.cslg.pas.common.utils.CacheUtils;
- import cn.cslg.pas.common.utils.LoginUtils;
- import cn.cslg.pas.common.vo.DepartmentVO;
- import cn.cslg.pas.common.vo.RdProjectVO;
- import cn.cslg.pas.common.vo.business.PatentDigProjectVO;
- import cn.cslg.pas.common.vo.business.PatentProjectVO;
- import cn.cslg.pas.common.vo.business.SimplePersonVO;
- import cn.cslg.pas.domain.business.*;
- import cn.cslg.pas.exception.UnLoginException;
- import cn.cslg.pas.exception.XiaoShiException;
- import cn.cslg.pas.factorys.businessFactory.Business;
- import cn.cslg.pas.factorys.reGroupFactory.QueryGroupFactory;
- import cn.cslg.pas.factorys.reGroupFactory.QueryGroupImp;
- import cn.cslg.pas.mapper.PatentDigProjectMapper;
- import cn.cslg.pas.service.common.FileManagerService;
- import cn.cslg.pas.service.permissions.PermissionService;
- import cn.cslg.pas.service.query.FormatQueryService;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- @Service
- public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper, PatentDigProject> implements Business {
- @Autowired
- private RdProjectService rdProjectService;
- @Autowired
- private AssoProjectFileService assoProjectFileService;
- @Autowired
- private ProjectService projectService;
- @Autowired
- private FormatQueryService formatQueryService;
- @Autowired
- private PatentDigProjectMapper patentDigProjectMapper;
- @Autowired
- private FileManagerService fileManagerService;
- @Autowired
- private PermissionService permissionService;
- @Autowired
- private CacheUtils cacheUtils;
- @Autowired
- private LoginUtils loginUtils;
- @Autowired
- private AssoProjectEventService assoProjectEventService;
- @Autowired
- private EventService eventService;
- @Autowired
- private AssoProjectPersonService assoProjectPersonService;
- @Autowired
- private MatterService matterService;
- @Autowired
- private ScenarioService scenarioService;
- @Autowired
- private QueryGroupFactory queryGroupFactory;
- @Autowired
- private SystemDictService systemDictService;
- @Override
- public Object queryMessage(QueryRequest queryRequest) throws Exception {
- List<String> sqls = formatQueryService.reSqls(queryRequest, "patentDigProject");
- //根据sql查询专题库信息
- sqls = this.loadSearchSql(sqls);
- List<PatentDigProjectVO> patentProjectVOS = patentDigProjectMapper.getPatentDigProject(sqls.get(0), sqls.get(1), sqls.get(2));
- Long total = patentDigProjectMapper.getPatentDigCount(sqls.get(0));
- //装载专利数据库信息
- this.loadPatentDigProject(patentProjectVOS);
- Records records = new Records();
- records.setCurrent(queryRequest.getCurrent());
- records.setSize(queryRequest.getSize());
- records.setData(patentProjectVOS);
- records.setTotal(total);
- return records;
- }
- @Override
- public Object addMessage(Object object, List<MultipartFile> files) {
- return null;
- }
- @Override
- public Object deleteMessage(List<Integer> ids) throws IOException {
- if (ids == null || ids.size() == 0) {
- throw new XiaoShiException("ids不能为空");
- }
- //根据projectId 删除专利挖掘项目
- LambdaQueryWrapper<PatentDigProject> digProjectQueryWrapper = new LambdaQueryWrapper<>();
- digProjectQueryWrapper.in(PatentDigProject::getProjectId, ids);
- this.remove(digProjectQueryWrapper);
- //根据projectId 删除相关文件
- LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
- deleteFileWrapper.in(AssoProjectFile::getProjectId, ids);
- assoProjectFileService.remove(deleteFileWrapper);
- //TODO 删除流程文件
- //根据专利挖掘项目删除项目
- projectService.removeBatchByIds(ids);
- return ids;
- }
- @Override
- public Object updateMessage(Object object, List<MultipartFile> files) {
- return null;
- }
- @Override
- public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
- StringRequest stringRequest = new StringRequest();
- BeanUtils.copyProperties(groupRequest, stringRequest);
- List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
- sqls = this.loadSearchSql(sqls);
- //格式化 分组
- GroupConfig groupConfig = null;
- if (groupRequest.getGroupBy() != null) {
- String json = CommonService.readJsonFile(tableName + ".json");
- List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
- groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
- if (groupConfig == null) {
- throw new XiaoShiException("未找到配置");
- }
- }
- tableName = "( select p.id as id ,p.create_id as createId,p.tenant_id as tenantId,p.head_id as headId,asps.scenario_id as scenarioId,aspm.matter_id as matterId,p.create_time as createTime ,entrust_id as entrustId,entrust_type as entrustType ,aspe.event_id as eventId from patent_dig_project as dp left join project as p on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id ";
- tableName += "left join (select * from asso_project_event where scenario_id is not null ) as asps on p.id = asps.project_id " +
- "left join (select * from asso_project_event where event_id is not null ) as aspe on p.id = aspe.project_id " +
- "left join (select * from asso_project_event where matter_id is not null ) as aspm on p.id = aspm.project_id) as t";
- //返回分组数据
- QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
- String countFiled = "distinct t.id";
- ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField(), countFiled);
- //装载数据
- GroupVO groupVO = new GroupVO();
- groupVO.setField(groupRequest.getGroupBy());
- groupVO.setValues(reGroupDataVO.getValues());
- Records records = new Records();
- records.setCurrent(groupRequest.getCurrent());
- records.setSize(groupRequest.getSize());
- records.setData(groupVO);
- records.setTotal(reGroupDataVO.getTotal());
- return records;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Object addMessage(Object object) {
- //获取登陆人信息 用于设置创建人
- PersonnelVO personnelVO = new PersonnelVO();
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String userId = personnelVO.getId();
- PatentDigProjectDTO patentDigProjectDTO = (PatentDigProjectDTO) object;
- Integer id = patentDigProjectDTO.getId();
- PatentDigProject patentDigProject = new PatentDigProject();
- BeanUtils.copyProperties(patentDigProjectDTO, patentDigProject);
- Project project = new Project();
- project.setTenantId(personnelVO.getTenantId());
- project.setType(3);
- project.setHeadId(patentDigProjectDTO.getHeadId());
- project.setCreateId(personnelVO.getId());
- project.setDescription(patentDigProjectDTO.getDescription());
- //TODO 当委托方id或者委托方名称不为空时,
- if (patentDigProjectDTO.getEntrustId() != null || patentDigProjectDTO.getEntrustName() != null) {
- //根据创建人的租户类型设置project的委托类型
- if (personnelVO.getTenantType().equals("1")) {
- project.setEntrustType(1);
- //当委托方id不为空时
- if (StringUtils.isNotEmpty(patentDigProjectDTO.getEntrustId()) && !StringUtils.equals(patentDigProjectDTO.getEntrustId(), "-1")) {
- project.setEntrustId(patentDigProjectDTO.getEntrustId());
- }
- //若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
- else {
- if (patentDigProjectDTO.getEntrustName() != null && patentDigProjectDTO.getEntrustName().trim() != "") {
- ClientDTO clientDTO = new ClientDTO();
- clientDTO.setName(patentDigProjectDTO.getEntrustName());
- clientDTO.setTenantId(personnelVO.getTenantId());
- try {
- String res = permissionService.addClient(clientDTO);
- JSONObject jsonObject = JSONObject.parseObject(res);
- Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
- project.setEntrustId(clientId.toString());
- project.setEntrustType(1);
- } catch (Exception e) {
- throw new XiaoShiException("网络异常");
- }
- }
- }
- } else {
- if (patentDigProjectDTO.getEntrustId() != null) {
- project.setEntrustType(0);
- project.setEntrustId(patentDigProjectDTO.getEntrustId());
- }
- }
- }
- if (id != null) {
- project.setId(id);
- project.updateById();
- } else {
- project.insert();
- }
- patentDigProject.setProjectId(project.getId());
- RdProject rdProject = new RdProject();
- List<RdProject> rdProjects = new ArrayList<>();
- if (patentDigProjectDTO.getRdnumber() != null) {
- //根据研发项目编号查询研发项目
- LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(RdProject::getNumber, patentDigProjectDTO.getRdnumber());
- rdProjects = rdProjectService.list(queryWrapper);
- } else if (patentDigProjectDTO.getRdName() != null && rdProjects.size() == 0) {
- //根据研发项目编号查询研发项目
- LambdaQueryWrapper<RdProject> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(RdProject::getName, patentDigProjectDTO.getRdName());
- rdProjects = rdProjectService.list(queryWrapper);
- }
- if (rdProjects.size() != 0) {
- rdProject = rdProjects.get(0);
- rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
- rdProject.setProduct(patentDigProjectDTO.getProduct());
- rdProject.updateById();
- } else {
- if (patentDigProjectDTO.getRdName() != null || patentDigProjectDTO.getRdnumber() != null || patentDigProjectDTO.getProduct() != null || patentDigProjectDTO.getProductPhase() != null) {
- rdProject.setName(patentDigProjectDTO.getRdName());
- rdProject.setCreateId(userId);
- rdProject.setTenantId(personnelVO.getTenantId());
- rdProject.setNumber(patentDigProjectDTO.getRdnumber());
- rdProject.setProductPhase(patentDigProjectDTO.getProductPhase());
- rdProject.setProduct(patentDigProjectDTO.getProduct());
- rdProject.insert();
- }
- }
- if (rdProject.getId() != null) {
- patentDigProject.setRdProjectId(rdProject.getId());
- }
- patentDigProject.setState(2);
- patentDigProject.setProcess("0");
- patentDigProject.setTenantId(personnelVO.getTenantId());
- patentDigProject.insert();
- /**
- * 装载和附件关联
- */
- List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
- List<String> fileGuids = patentDigProjectDTO.getFileGuids();
- if (fileGuids != null && fileGuids.size() != 0) {
- for (String fileGuid : fileGuids) {
- AssoProjectFile assoProjectFile = new AssoProjectFile();
- assoProjectFile.setProjectId(project.getId());
- assoProjectFile.setFileGuid(fileGuid);
- assoProjectFile.setCreateId(personnelVO.getId());
- assoProjectFiles.add(assoProjectFile);
- }
- if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
- assoProjectFileService.saveBatch(assoProjectFiles);
- }
- }
- /**
- * 装载事件与project关联
- */
- List<ProjectEventDTO> events = patentDigProjectDTO.getEvents();
- if (events != null && events.size() != 0) {
- //遍历传入的事件集合
- if (events != null && events.size() != 0) {
- assoProjectEventService.addAssoEventProject(events, project.getId(), 2);
- }
- }
- /**
- *装载参与人
- */
- if (patentDigProjectDTO.getInvolvedPersonIds() != null && patentDigProjectDTO.getInvolvedPersonIds().size() != 0) {
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- patentDigProjectDTO.getInvolvedPersonIds().forEach(item -> {
- AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
- assoProjectPerson.setPersonId(item);
- assoProjectPerson.setRole(1);
- assoProjectPerson.setProjectId(project.getId());
- assoProjectPerson.setCreateId(userId);
- assoProjectPersonList.add(assoProjectPerson);
- });
- assoProjectPersonService.saveBatch(assoProjectPersonList);
- }
- return patentDigProject.getProjectId();
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Object updateMessage(Object object) {
- //获取登陆人信息 用于设置创建人
- PersonnelVO personnelVO = new PersonnelVO();
- personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String userId = personnelVO.getId();
- PatentDigProjectUpdateDTO projectUpdateDTO = (PatentDigProjectUpdateDTO) object;
- PatentDigProject patentDigProject = new PatentDigProject();
- Project project = projectService.getById(projectUpdateDTO.getId());
- project.setHeadId(projectUpdateDTO.getHeadId());
- project.setDescription(projectUpdateDTO.getDescription());
- //当委托方id不为空时
- if (StringUtils.isNotEmpty(projectUpdateDTO.getEntrustId()) && !StringUtils.equals(projectUpdateDTO.getEntrustId(), "-1")) {
- project.setEntrustId(projectUpdateDTO.getEntrustId());
- } else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
- if (projectUpdateDTO.getEntrustName() != null && projectUpdateDTO.getEntrustName().trim() != "") {
- ClientDTO clientDTO = new ClientDTO();
- clientDTO.setName(projectUpdateDTO.getEntrustName());
- clientDTO.setTenantId(personnelVO.getTenantId());
- try {
- String res = permissionService.addClient(clientDTO);
- JSONObject jsonObject = JSONObject.parseObject(res);
- Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
- project.setEntrustId(clientId.toString());
- } catch (Exception e) {
- throw new XiaoShiException("网络异常");
- }
- }
- }
- project.updateById();
- //根据projectId查询专利挖掘项目
- LambdaQueryWrapper<PatentDigProject> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(PatentDigProject::getProjectId, project.getId());
- List<PatentDigProject> patentDigProjects = this.list(queryWrapper);
- if (patentDigProjects.size() != 0) {
- //装载专利挖掘项目基本信息
- patentDigProject = patentDigProjects.get(0);
- patentDigProject.setName(projectUpdateDTO.getName());
- patentDigProject.setIfSearch(projectUpdateDTO.getIfSearch());
- patentDigProject.setOutput(projectUpdateDTO.getOutput());
- patentDigProject.setTechnicalDirection(projectUpdateDTO.getTechnicalDirection());
- patentDigProject.setRelatedCompetitors(projectUpdateDTO.getRelatedCompetitors());
- patentDigProject.setTechnicalKeyword(projectUpdateDTO.getTechnicalKeyword());
- if (projectUpdateDTO.getProcess() != null) {
- patentDigProject.setProcess(projectUpdateDTO.getProcess());
- }
- }
- RdProject rdProject = new RdProject();
- List<RdProject> rdProjects = new ArrayList<>();
- if (projectUpdateDTO.getRdnumber() != null) {
- //根据研发项目编号查询研发项目
- LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
- queryWrappera.eq(RdProject::getNumber, projectUpdateDTO.getRdnumber());
- rdProjects = rdProjectService.list(queryWrappera);
- } else if (projectUpdateDTO.getRdName() != null && rdProjects.size() == 0) {
- //根据研发项目编号查询研发项目
- LambdaQueryWrapper<RdProject> queryWrappera = new LambdaQueryWrapper<>();
- queryWrappera.eq(RdProject::getName, projectUpdateDTO.getRdName());
- rdProjects = rdProjectService.list(queryWrappera);
- }
- if (rdProjects.size() != 0) {
- rdProject = rdProjects.get(0);
- rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
- rdProject.setProduct(projectUpdateDTO.getProduct());
- rdProject.updateById();
- } else {
- if (projectUpdateDTO.getRdName() != null || projectUpdateDTO.getRdnumber() != null || projectUpdateDTO.getProduct() != null || projectUpdateDTO.getProductPhase() != null) {
- rdProject.setName(projectUpdateDTO.getRdName());
- rdProject.setCreateId(userId);
- rdProject.setTenantId(personnelVO.getTenantId());
- rdProject.setNumber(projectUpdateDTO.getRdnumber());
- rdProject.setProductPhase(projectUpdateDTO.getProductPhase());
- rdProject.setProduct(projectUpdateDTO.getProduct());
- rdProject.insert();
- }
- }
- if (rdProject.getId() != null) {
- patentDigProject.setRdProjectId(rdProject.getId());
- }
- //更新专利挖掘项目
- patentDigProject.updateById();
- //移除和附件关联
- LambdaQueryWrapper<AssoProjectFile> assoQueryWrapper = new LambdaQueryWrapper<>();
- assoQueryWrapper.eq(AssoProjectFile::getProjectId, projectUpdateDTO.getId());
- assoProjectFileService.remove(assoQueryWrapper);
- /**
- * 装载和附件关联
- */
- List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
- List<String> fileGuids = projectUpdateDTO.getFileGuids();
- if (fileGuids != null && fileGuids.size() != 0) {
- for (String fileGuid : fileGuids) {
- AssoProjectFile assoProjectFile = new AssoProjectFile();
- assoProjectFile.setProjectId(project.getId());
- assoProjectFile.setFileGuid(fileGuid);
- assoProjectFile.setCreateId(personnelVO.getId());
- assoProjectFiles.add(assoProjectFile);
- }
- if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
- assoProjectFileService.saveBatch(assoProjectFiles);
- }
- }
- //删除和事件关联
- LambdaQueryWrapper<AssoProjectEvent> assoEventQueryWrapper = new LambdaQueryWrapper<>();
- assoEventQueryWrapper.eq(AssoProjectEvent::getProjectId, projectUpdateDTO.getId());
- assoProjectEventService.remove(assoEventQueryWrapper);
- /**
- * 装载事件与project关联
- */
- List<ProjectEventDTO> events = projectUpdateDTO.getEvents();
- if (events != null && events.size() != 0) {
- assoProjectEventService.addAssoEventProject(events, project.getId(), 2);
- }
- LambdaQueryWrapper<AssoProjectPerson> assoProjectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
- assoProjectPersonLambdaQueryWrapper.eq(AssoProjectPerson::getProjectId, projectUpdateDTO.getId());
- assoProjectPersonService.remove(assoProjectPersonLambdaQueryWrapper);
- /**
- *装载参与人
- */
- if (projectUpdateDTO.getInvolvedPersonIds() != null && projectUpdateDTO.getInvolvedPersonIds().size() != 0) {
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- projectUpdateDTO.getInvolvedPersonIds().forEach(item -> {
- AssoProjectPerson assoProjectPerson = new AssoProjectPerson();
- assoProjectPerson.setPersonId(item);
- assoProjectPerson.setRole(1);
- assoProjectPerson.setProjectId(project.getId());
- assoProjectPerson.setCreateId(userId);
- assoProjectPersonList.add(assoProjectPerson);
- });
- assoProjectPersonService.saveBatch(assoProjectPersonList);
- }
- return projectUpdateDTO.getId();
- }
- public Records getRdProjectByNumber(@RequestBody StringRequest stringRequest) {
- List<String> sqls = formatQueryService.reSqls(stringRequest, "rdProject");
- //根据sql查询专题库信息
- List<RdProject> patentProjectVOS = patentDigProjectMapper.getRdProject(sqls.get(0), sqls.get(1), sqls.get(2));
- Long total = patentDigProjectMapper.getRdProjectCount(sqls.get(0));
- //装载专利数据库信息
- Records records = new Records();
- records.setCurrent(stringRequest.getCurrent());
- records.setSize(stringRequest.getSize());
- records.setData(patentProjectVOS);
- records.setTotal(total);
- return records;
- }
- public void loadPatentDigProject(List<PatentDigProjectVO> patentDigProjectVOS) throws IOException {
- List<String> createIds = new ArrayList<>();
- List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
- List<Integer> ids = new ArrayList<>();
- List<String> guids = new ArrayList<>();
- List<SystemFile> systemFiles = new ArrayList<>();
- List<Personnel> personnels = new ArrayList<>();
- List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
- List<Event> events = new ArrayList<>();
- List<Scenario> scenarios = new ArrayList<>();
- List<Matter> matters = new ArrayList<>();
- List<Client> clients = new ArrayList<>();
- List<String> departmentIds = new ArrayList<>();
- List<Integer> clientIds = new ArrayList<>();
- List<AssoProjectPerson> assoProjectPersonList = new ArrayList<>();
- List<DepartmentVO> departmentVOS = new ArrayList<>();
- List<SystemDict> systemDictList = new ArrayList<>();
- //获得创建人id集合
- patentDigProjectVOS.forEach(
- item -> {
- if (item.getCreateId() != null) {
- createIds.add(item.getCreateId());
- }
- if (item.getHeadId() != null) {
- createIds.add(item.getHeadId());
- }
- if (item.getId() != null) {
- ids.add(item.getId());
- }
- if (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
- departmentIds.add(item.getEntrustId());
- }
- if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
- clientIds.add(Integer.parseInt(item.getEntrustId()));
- }
- }
- );
- if (ids.size() != 0) {
- //根据事件id获得专利数据库文件关联表
- LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(AssoProjectFile::getProjectId, ids);
- assoProjectFiles = assoProjectFileService.list(queryWrapper);
- guids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
- //
- LambdaQueryWrapper<SystemDict> systemDictLambdaQueryWrapper = new LambdaQueryWrapper<>();
- systemDictLambdaQueryWrapper.eq(SystemDict::getType, "REPORT_STATE");
- systemDictList = systemDictService.list(systemDictLambdaQueryWrapper);
- }
- //查询文件
- if (guids.size() != 0) {
- String res = fileManagerService.getSystemFileFromFMS(guids);
- systemFiles = JSONObject.parseArray(res, SystemFile.class);
- }
- //查询应用场景、调查类型、事件和专题库的关联
- if (ids != null && ids.size() > 0) {
- LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
- assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
- assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
- //查询事件
- if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
- scenarios = scenarioService.list();
- matters = matterService.list();
- List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
- if (eventIds.size() != 0) {
- LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
- eventQueryWrapper.in(Event::getId, eventIds);
- events = eventService.list(eventQueryWrapper);
- }
- }
- //查询部门名称
- if (departmentIds.size() != 0) {
- String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
- departmentVOS = JSON.parseArray(json, DepartmentVO.class);
- }
- //查询和参与人关联
- LambdaQueryWrapper<AssoProjectPerson> projectPersonLambdaQueryWrapper = new LambdaQueryWrapper<>();
- projectPersonLambdaQueryWrapper.in(AssoProjectPerson::getProjectId, ids);
- assoProjectPersonList = assoProjectPersonService.list(projectPersonLambdaQueryWrapper);
- List<String> personIds = assoProjectPersonList.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
- createIds.addAll(personIds);
- }
- //查询创建人名称
- if (createIds.size() != 0) {
- String res = permissionService.getPersonnelByIdsFromPCS(createIds);
- JSONObject jsonObject = JSONObject.parseObject(res);
- personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
- }
- //查询客户名称
- if (clientIds.size() != 0) {
- String res = permissionService.getClientByIdsFromPCS(clientIds);
- JSONObject jsonObject = JSONObject.parseObject(res);
- clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
- }
- //装载信息
- for (PatentDigProjectVO patentDigProjectVO : patentDigProjectVOS) {
- //装载人员信息
- Personnel personnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getCreateId())).findFirst().orElse(null);
- if (personnel != null) {
- patentDigProjectVO.setCreateName(personnel.getPersonnelName());
- }
- if (patentDigProjectVO.getHeadId() != null) {
- Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectVO.getHeadId())).findFirst().orElse(null);
- if (headPersonnel != null) {
- patentDigProjectVO.setHeadName(headPersonnel.getPersonnelName());
- }
- }
- //装载参与人
- List<SimplePersonVO> simplePersonVOS = new ArrayList<>();
- List<AssoProjectPerson> assoProjectPersonTmps = assoProjectPersonList.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
- List<String> personIds = assoProjectPersonTmps.stream().map(AssoProjectPerson::getPersonId).collect(Collectors.toList());
- if (personIds.size() != 0) {
- List<Personnel> personneltmps = personnels.stream().filter(item -> personIds.contains(item.getId())).collect(Collectors.toList());
- personneltmps.forEach(item -> {
- SimplePersonVO simplePersonVO = new SimplePersonVO();
- simplePersonVO.setPersonId(item.getId());
- simplePersonVO.setPersonName(item.getPersonnelName());
- simplePersonVOS.add(simplePersonVO);
- });
- }
- patentDigProjectVO.setInvolvedPersons(simplePersonVOS);
- //装载文件信息
- List<AssoProjectFile> assoProjectFileTemp = assoProjectFiles.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
- if (assoProjectFileTemp.size() != 0) {
- List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
- if (guidTemp.size() != 0 && systemFiles != null) {
- List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
- if (systemFileTemp.size() != 0) {
- patentDigProjectVO.setSystemFileList(systemFileTemp);
- }
- }
- }
- //装载事件 应用场景,处理事项
- List<Integer> eventIds = new ArrayList<>();
- List<Integer> matterIds = new ArrayList<>();
- List<Integer> scenarioIds = new ArrayList<>();
- List<String> eventTmpNames = new ArrayList<>();
- List<String> matterTmpNames = new ArrayList<>();
- List<String> scenarioTmpNames = new ArrayList<>();
- if (assoProjectEvents != null) {
- List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(patentDigProjectVO.getId())).collect(Collectors.toList());
- if (assoProjectEventTmps.size() != 0) {
- //过滤出事件
- eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
- matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
- scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
- List<Integer> eventIdsFilter = eventIds;
- List<Integer> matterIdsFilter = matterIds;
- List<Integer> scenarioIdsFilter = scenarioIds;
- List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
- List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
- List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
- eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
- eventIds = eventTmps.stream().map(Event::getId).collect(Collectors.toList());
- matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
- matterIds = matterTmps.stream().map(Matter::getId).collect(Collectors.toList());
- scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
- scenarioIds = scenarioTmps.stream().map(Scenario::getId).collect(Collectors.toList());
- }
- }
- patentDigProjectVO.setScenarioIds(scenarioIds);
- patentDigProjectVO.setMatterIds(matterIds);
- patentDigProjectVO.setEventIds(eventIds);
- patentDigProjectVO.setScenarioNames(scenarioTmpNames);
- patentDigProjectVO.setMatterNames(matterTmpNames);
- patentDigProjectVO.setEventNames(eventTmpNames);
- //裝載委托方
- if (patentDigProjectVO.getEntrustType() != null) {
- //当委托方为客户时
- if (patentDigProjectVO.getEntrustType().equals(1)) {
- Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(patentDigProjectVO.getEntrustId()))).findFirst().orElse(null);
- if (client != null) {
- patentDigProjectVO.setEntrustName(client.getName());
- }
- } else if (patentDigProjectVO.getEntrustType().equals(2)) {
- DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(patentDigProjectVO.getEntrustId())).findFirst().orElse(null);
- if (departmentVO != null) {
- patentDigProjectVO.setEntrustName(departmentVO.getDepartName());
- }
- }
- }
- //装载报告状态
- SystemDict systemDictStatus = systemDictList.stream().filter(item -> patentDigProjectVO.getState().equals(Integer.parseInt(item.getValue())) && item.getType().equals("REPORT_STATE")).findFirst().orElse(null);
- if (systemDictStatus != null) {
- patentDigProjectVO.setStateName(systemDictStatus.getLabel());
- }
- }
- }
- //装载查询语句
- private List<String> loadSearchSql(List<String> sqls) {
- PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
- String id = personnelVO.getId();
- Integer tenantId = personnelVO.getTenantId();
- Integer roleType = personnelVO.getRoleType();
- String rootSql = "";
- if (roleType == null || roleType.equals(0)) {
- rootSql = "(t.createId =" + id + " or t.headId=" + id + " or t.id in (select project_id from asso_project_person where person_id =" + id + "))";
- } else if (roleType.equals(2)) {
- rootSql = "t.tenantId=" + tenantId;
- }
- if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
- sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
- } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
- sqls.set(0, rootSql);
- }
- return sqls;
- }
- }
|