diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java index 086cbddee..f94670b2d 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/shiro/ShiroConfig.java @@ -152,6 +152,10 @@ public class ShiroConfig { filterChainDefinitionMap.put("/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/processCall", "anon"); // 法规技术评估-条款信息评估结果表 工作流处理数据接口排除 filterChainDefinitionMap.put("/lawsTechnologyEvaluation/lawsTechnologyEvaluationItemResultEO/processCall", "anon"); + // 流程信息表 工作流处理数据接口排除 + filterChainDefinitionMap.put("/todoCenter/processInfoEO/processCall", "anon"); + // 流程信息明细表 工作流处理数据接口排除 + filterChainDefinitionMap.put("/todoCenter/processInfoDetailEO/processCall", "anon"); filterChainDefinitionMap.put("/lark/larkEventSubscriptionConfig", "anon"); //飞书调用接口,事件订阅配置。 filterChainDefinitionMap.put("/lark/larkCardMessageConfig", "anon"); //飞书调用接口,卡片消息配置。 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsCollectManifestEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsCollectManifestEOMapper.java index 1166ad6d3..76eedb79c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsCollectManifestEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsCollectManifestEOMapper.java @@ -18,6 +18,8 @@ public interface ParamsCollectManifestEOMapper extends BaseMapper listInfo(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); + List listInfoOfTodoCenter(); + List> listInfoForExport(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); // 查询控件类型为 标题的 参数项 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsManifestEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsManifestEOMapper.java index 97a6d0c9b..5d718889d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsManifestEOMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/ParamsManifestEOMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.jero.modules.cert.collect.entity.ParamsManifestEO; import com.jero.modules.cert.collect.vo.ParamsManifestVO; +import com.jero.modules.todoCenter.entity.ParamsManifestTodoCenterEO; +import com.jero.modules.todoCenter.vo.ParamsManifestTodoCenterEOPage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -24,6 +26,8 @@ public interface ParamsManifestEOMapper extends BaseMapper { List listInfoAll(@Param("idList") List idList); + List listForTodoCenter(ParamsManifestTodoCenterEOPage paramsManifestTodoCenterEOPage); + ParamsManifestVO getProjectById(@Param("projectId") String projectId); List> labelListForProjectDetails(@Param("projectId") String projectId); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestEOMapper.xml index 26f0ae6c0..0b45b9351 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestEOMapper.xml @@ -81,6 +81,10 @@ order by del_flag desc, add_flag desc, change_flag desc, nio_number asc + + + + + SELECT + pi.id, + pi.project_library_id, + pi.project_laws_inventory_id, + pi.buss_document_library_id, + pi.acti_proc_inst_id, + pni.project_name, + pyni.year_name, + pli.serial_number, + pli.title, + pi.flow_type, + createBy.username as "create_by", + pi.end_time, + (select detail.task_id from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_id, + (select detail.task_definition_key from process_info_detail detail where detail.process_info_id = pi.id and detail.user_id = #{params.currentUserId} limit 1) as task_definition_key, + pi.status, + pi.prc_num, + pi.prc_name, + plb.project_name_id, + plb.target_market, + plb.studio_engineer + FROM + process_info pi + left join project_library_base plb on plb.id = pi.project_library_id + left join project_name_info pni on pni.id = plb.project_name_id + left join project_year_name_info pyni on pyni.id = plb.year_name_id + left join project_laws_inventory pli on pi.project_laws_inventory_id = pli.id + LEFT JOIN sys_user createBy on createBy.id = pi.create_by + + order by pi.end_time asc + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IParamsManifestTodoCenterService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IParamsManifestTodoCenterService.java new file mode 100644 index 000000000..ab08b4a0a --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IParamsManifestTodoCenterService.java @@ -0,0 +1,16 @@ +package com.jero.modules.todoCenter.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.modules.todoCenter.vo.ParamsManifestTodoCenterEOPage; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 09:43 2022/10/11 + */ + +public interface IParamsManifestTodoCenterService { + + // 分页查询当前登录人待办清单列表 + IPage queryPage(ParamsManifestTodoCenterEOPage pageVO); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoDetailEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoDetailEOService.java new file mode 100644 index 000000000..f72da7cba --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoDetailEOService.java @@ -0,0 +1,76 @@ +package com.jero.modules.todoCenter.service; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 流程信息明细表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +public interface IProcessInfoDetailEOService extends IService { + + /** + * 保存 + * + * @param processInfoDetailEO + * @return + */ + void add(ProcessInfoDetailEO processInfoDetailEO); + + /** + * 更新 + * + * @param processInfoDetailEO + * @return + */ + void editById(ProcessInfoDetailEO processInfoDetailEO); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ProcessInfoDetailEO queryById(String id); + + /** + * 列表查询 + * + * @return + */ + List queryList(); + + /** + * 流程调用 + * @param jsonObject + * @return + */ + Result processCall(JSONObject jsonObject); + + /** + * 批量插入dre工程师的待办任务 + * @param processInfoDetailEOList + */ + void batchInsertDreUserTask(List processInfoDetailEOList); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java new file mode 100644 index 000000000..6606cf1fa --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java @@ -0,0 +1,120 @@ +package com.jero.modules.todoCenter.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; + +/** + * @Description: 流程信息表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +public interface IProcessInfoEOService extends IService { + + /** + * 保存 + * + * @param processInfoEO + * @return + */ + void add(ProcessInfoEO processInfoEO); + + /** + * 更新 + * + * @param processInfoEO + * @return + */ + void editById(ProcessInfoEO processInfoEO); + + /** + * 通过id删除 + * + * @param id + * @return + */ + void deleteById(String id); + + /** + * 批量删除 + * + * @param ids + * @return + */ + void deleteByIds(List ids); + + /** + * 通过id查询 + * + * @param id + * @return + */ + ProcessInfoEO queryById(String id); + + /** + * 列表查询 + * + * @return + */ + List queryList(); + + /** + * 流程调用 + * @param jsonObject + * @return + */ + Result processCall(JSONObject jsonObject); + + /** + * 项目流程-待办任务列表 + * @param params + * @return + */ + IPage projectProcessTodoTaskList(Map params); + + /** + * 项目流程-已办任务列表 + * @param params + * @return + */ + IPage projectProcessDoneProcess(Map params); + + /** + * 项目流程-已发任务列表 + * @param params + * @return + */ + IPage projectProcessIssuedProcess(Map params); + + /** + * 法规清单变更,清除对应待办中心数据。 + * @param params + */ + void change(Map params); + + /** + * 法规评估-待办任务列表 + * @param params + * @return + */ + IPage lawsAssessTodoTaskList(Map params); + + /** + * 法规评估-已办任务列表 + * @param params + * @return + */ + IPage lawsAssessDoneProcess(Map params); + + /** + * 法规评估-已发任务列表 + * @param params + * @return + */ + IPage lawsAssessIssuedProcess(Map params); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ParamsManifestTodoCenterServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ParamsManifestTodoCenterServiceImpl.java new file mode 100644 index 000000000..680615106 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ParamsManifestTodoCenterServiceImpl.java @@ -0,0 +1,347 @@ +package com.jero.modules.todoCenter.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.cert.collect.entity.ParamsCollectManifestEO; +import com.jero.modules.cert.collect.enums.CollectManifestStateEnum; +import com.jero.modules.cert.collect.enums.CollectManifestUserTypeEnum; +import com.jero.modules.cert.collect.enums.ManifestStateEnum; +import com.jero.modules.cert.collect.mapper.ParamsCollectManifestEOMapper; +import com.jero.modules.cert.collect.mapper.ParamsManifestEOMapper; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectRelatedPersonnel; +import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; +import com.jero.modules.project.service.IProjectRelatedPersonnelService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import com.jero.modules.todoCenter.entity.ParamsManifestTodoCenterEO; +import com.jero.modules.todoCenter.service.IParamsManifestTodoCenterService; +import com.jero.modules.todoCenter.vo.ParamsManifestTodoCenterEOPage; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 09:43 2022/10/11 + */ +@Service +public class ParamsManifestTodoCenterServiceImpl implements IParamsManifestTodoCenterService { + @Autowired + private ProjectLibraryBaseMapper projectLibraryBaseMapper; + + @Autowired + private ISysUserService sysUserService; + + @Autowired + private IProjectRelatedPersonnelService projectRelatedPersonnelService; + + @Autowired + private ParamsCollectManifestEOMapper paramsCollectManifestEOMapper; + + @Autowired + private ParamsManifestEOMapper paramsManifestEOMapper; + + @Override + public IPage queryPage(ParamsManifestTodoCenterEOPage pageVO) { + + // 查询所有项目下的 状态为收集中的清单 + pageVO.setState(ManifestStateEnum.COLLECTING.getValue()); + List paramsManifestEOListAll = paramsManifestEOMapper.listForTodoCenter(pageVO); + + // 筛选出当前登录人能在清单中是homo/sdt/dre角色的清单,并分页 + LambdaQueryWrapper projectLibraryBaseLambdaQueryWrapper = new LambdaQueryWrapper<>(); + List projectLibraryBaseListAll = projectLibraryBaseMapper.selectList(projectLibraryBaseLambdaQueryWrapper); + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // 获取当前登录用户 + List paramsManifestEOList = new ArrayList<>(); + List projectLibraryBaseList = new ArrayList<>(); + Map manifestUserTypeOfHomo = new HashMap<>(); + Map manifestUserTypeOfSdt = new HashMap<>(); + Map manifestUserTypeOfDre = new HashMap<>(); + Map> paramsManifestEOListMap = new HashMap<>(); + + // 查询清单的所有参数项 + List pcmListAll = paramsCollectManifestEOMapper.listInfoOfTodoCenter(); + + String userType = ""; + for(ParamsManifestTodoCenterEO paramsManifestEO : paramsManifestEOListAll) { + // 查询清单的所有参数项 + List pcmList = pcmListAll.stream().filter(e->paramsManifestEO.getId().equals(e.getParamsManifestId())).collect(Collectors.toList()); + int count1 = (int) pcmList.stream().filter(e-> CollectManifestStateEnum.SUBMIT.getValue().equals(e.getState()) + || CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.getState())).count(); + if (count1 == pcmList.size()) { + continue; + } + + // 判断是不是homo角色 + projectLibraryBaseList = projectLibraryBaseListAll.stream().filter(e->paramsManifestEO.getProjectId().equals(e.getId())).collect(Collectors.toList()); + userType = getLoginUserTypeOfHomo(projectLibraryBaseList, loginUser); + if(StringUtils.isNotBlank(userType)) { + paramsManifestEOList.add(paramsManifestEO); + manifestUserTypeOfHomo.put(paramsManifestEO.getId(), true); + paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList); + continue; + } + + // 判断是不是sdt角色 + userType = getLoginUserTypeOfSdt(pcmList, loginUser); + if(StringUtils.isNotBlank(userType)) { + paramsManifestEOList.add(paramsManifestEO); + manifestUserTypeOfSdt.put(paramsManifestEO.getId(), true); + paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList); + continue; + } + + // 判断是不是dre角色 + userType = getLoginUserTypeOfDre(pcmList, loginUser); + if(StringUtils.isNotBlank(userType)) { + paramsManifestEOList.add(paramsManifestEO); + manifestUserTypeOfDre.put(paramsManifestEO.getId(), true); + paramsManifestEOListMap.put(paramsManifestEO.getId(), pcmList); + continue; + } + } + + // 分页 + paramsManifestEOList = paramsManifestEOList.stream() + .sorted(Comparator.comparing(ParamsManifestTodoCenterEO::getCreateTime).reversed()) + .collect(Collectors.toList()); + List result = new ArrayList<>(); + int pageNo = pageVO.getPageNo(); + int pageSize = pageVO.getPageSize(); + IPage page = new Page(pageNo, pageSize); + page.setTotal(paramsManifestEOList.size()); + + int subSize = pageVO.getPageSize(); // 每页记录数 + int subCount = paramsManifestEOList.size(); // 总记录数 + int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0); //总页数 + // 分页计算 + int fromIndex = (pageNo-1) * subSize; + int toIndex = ((pageNo == subPageTotal) ? subCount : (pageNo * subSize)); + if( fromIndex <= subCount && toIndex <= subCount) { + result = paramsManifestEOList.subList(fromIndex, toIndex); + } else { + result = new ArrayList(); + } + + // 统计清单中的待办参数数据 + List records = getStatistics(result, manifestUserTypeOfHomo, manifestUserTypeOfSdt, manifestUserTypeOfDre, paramsManifestEOListMap,loginUser); + page.setRecords(records); + return page; + } + + + public List getStatistics(List paramsManifestEOList, Map manifestUserTypeOfHomo + ,Map manifestUserTypeOfSdt, Map manifestUserTypeOfDre, Map> paramsManifestEOListMap, LoginUser loginUser) { + List paramsManifestTodoCenterEOList = new ArrayList<>(); + + for(ParamsManifestTodoCenterEO paramsManifestTodoCenterEO : paramsManifestEOList) { + // 查询清单的所有参数项 + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + paramsCollectManifestEO.setParamsManifestId(paramsManifestTodoCenterEO.getId()); + List pcmList = paramsManifestEOListMap.get(paramsManifestTodoCenterEO.getId()); + int count = 0; + + if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfHomo.get(paramsManifestTodoCenterEO.getId())) { + // 统计待发起数量 包括状态:待发起收集,变更,工程接口人退回 + count = (int) pcmList.stream().filter(e-> CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.getState()) + || CollectManifestStateEnum.SDT_BACK.getValue().equals(e.getState()) + || CollectManifestStateEnum.CHANGE.getValue().equals(e.getState())).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitCollectNum(count); + } + // 统计待分配数量 包括状态:待工程接口人处理,填写人退回 + count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.getState()) + || CollectManifestStateEnum.DRE_BACK.getValue().equals(e.getState()))).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitSdtNum(count); + } + // 统计待填写数量 包括状态:待填写,认证工程师退回 + count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState()) + || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitFillNum(count); + } + } else if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfSdt.get(paramsManifestTodoCenterEO.getId())) { + // 统计待分配数量 包括状态:待工程接口人处理,填写人退回 + count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.getState()) + || CollectManifestStateEnum.DRE_BACK.getValue().equals(e.getState())) + && loginUser.getUsername().equals(e.getSdt())).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitSdtNum(count); + } + // 统计待填写数量 包括状态:待填写,认证工程师退回 + count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState()) + || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState()))).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitFillNum(count); + } + + } else if (ObjectUtil.isNotEmpty(paramsManifestTodoCenterEO.getId()) && manifestUserTypeOfDre.get(paramsManifestTodoCenterEO.getId())) { + // 统计待填写数量 包括状态:待填写,认证工程师退回 + count = (int) pcmList.stream().filter(e-> (CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.getState()) + || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.getState())) + && loginUser.getUsername().equals(e.getDre())).count(); + if (count > 0) { + paramsManifestTodoCenterEO.setWaitFillNum(count); + } + + } + + paramsManifestTodoCenterEOList.add(paramsManifestTodoCenterEO); + } + return paramsManifestTodoCenterEOList; + } + + /** + * 根据项目id,清单id查询当前登录人的Homo角色 + * @param projectId + * @param paramsManifestId + * @return + */ + public List getLoginUserTypes(String projectId, String paramsManifestId, LoginUser loginUser) { + + List userTypeList = new ArrayList<>(); // 一个用户可以有多个用户类型 +// LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); // 获取当前登录用户 + + // 查询项目下所有责任领域下的 homo人员 + List projectLibraryBaseList = projectLibraryBaseMapper.queryById(projectId); + List homoList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(projectLibraryBaseList)) { + String homoIdStr = projectLibraryBaseList.get(0).getCertificationEngineer(); + if (StringUtils.isNotEmpty(homoIdStr)) { + List homoIdList = Arrays.asList(homoIdStr.split(",")).stream().distinct().collect(Collectors.toList()); + homoList = sysUserService.listByIds(homoIdList).stream().map(SysUser::getUsername).collect(Collectors.toList()); + } + } + + // 查询项目下所有责任领域下的 sdt人员 + List sdtList = new ArrayList<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectRelatedPersonnel::getProjectId, projectId); + List prpList = projectRelatedPersonnelService.list(queryWrapper); +// String homoIdStr = prpList.stream().map(e -> e.getCertificationEngineer()).collect(Collectors.joining(",")); + String sdtIdStr = prpList.stream().map(e -> e.getEngineeringInterfacePerson()).collect(Collectors.joining(",")); + // 项目下有homo-->不一定有sdt + if(StringUtils.isNotBlank(sdtIdStr)) { + List sdtIdList = Arrays.asList(sdtIdStr.split(",")).stream().distinct().collect(Collectors.toList()); + sdtList = sysUserService.listByIds(sdtIdList).stream().map(SysUser::getUsername).collect(Collectors.toList()); + } + + // 查询项目下参数清单下收集参数项中的 sdt,dre人员 + ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO(); + paramsCollectManifestEO.setParamsManifestId(paramsManifestId); + List pcmList = paramsCollectManifestEOMapper.listInfo(paramsCollectManifestEO); + List sdtListOfPCM = pcmList.stream() + .filter(e->StringUtils.isNotEmpty(e.getSdt())) + .map(ParamsCollectManifestEO::getSdt) + .distinct() + .collect(Collectors.toList()); + sdtList.addAll(sdtListOfPCM); // 需要取并集,因为存在参数项开始收集但 人员相关名单中sdt被修改的情况 + + List dreListOfPCM = pcmList.stream() + .filter(e->StringUtils.isNotEmpty(e.getDre())) + .map(ParamsCollectManifestEO::getDre) + .distinct() + .collect(Collectors.toList()); + + String loginUserName = loginUser.getUsername().toLowerCase(); + + homoList = toLowerCaseOfList(homoList); + sdtList = toLowerCaseOfList(sdtList); + dreListOfPCM = toLowerCaseOfList(dreListOfPCM); + + + if (homoList.contains(loginUserName)) { + userTypeList.add(CollectManifestUserTypeEnum.HOMO.getValue()); + } + + if (sdtList.contains(loginUserName)) { + userTypeList.add(CollectManifestUserTypeEnum.SDT.getValue()); + } + + if (dreListOfPCM.contains(loginUserName)) { + userTypeList.add(CollectManifestUserTypeEnum.DRE.getValue()); + } + + return userTypeList; + } + + public String getLoginUserTypeOfHomo(List projectLibraryBaseList, LoginUser loginUser) { + + String userType = ""; // 一个用户可以有多个用户类型 + + // 查询项目下的 homo人员 + List homoList = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(projectLibraryBaseList)) { + String homoIdStr = projectLibraryBaseList.get(0).getCertificationEngineer(); + if (StringUtils.isNotEmpty(homoIdStr)) { + List homoIdList = Arrays.asList(homoIdStr.split(",")).stream().distinct().collect(Collectors.toList()); + homoList = sysUserService.listByIds(homoIdList).stream().map(SysUser::getUsername).collect(Collectors.toList()); + } + } + + String loginUserName = loginUser.getUsername().toLowerCase(); + homoList = toLowerCaseOfList(homoList); + if (homoList.contains(loginUserName)) { + userType = CollectManifestUserTypeEnum.HOMO.getValue(); + } + return userType; + } + + public String getLoginUserTypeOfSdt(List pcmList, LoginUser loginUser) { + + String userType = ""; // 一个用户可以有多个用户类型 + + List sdtListOfPCM = pcmList.stream() + .filter(e->StringUtils.isNotEmpty(e.getSdt())) + .map(ParamsCollectManifestEO::getSdt) + .distinct() + .collect(Collectors.toList()); + + String loginUserName = loginUser.getUsername().toLowerCase(); + sdtListOfPCM = toLowerCaseOfList(sdtListOfPCM); + if (sdtListOfPCM.contains(loginUserName)) { + userType = CollectManifestUserTypeEnum.SDT.getValue(); + } + return userType; + } + + public String getLoginUserTypeOfDre(List pcmList, LoginUser loginUser) { + + String userType = ""; // 一个用户可以有多个用户类型 + + List dreListOfPCM = pcmList.stream() + .filter(e->StringUtils.isNotEmpty(e.getDre())) + .map(ParamsCollectManifestEO::getDre) + .distinct() + .collect(Collectors.toList()); + + String loginUserName = loginUser.getUsername().toLowerCase(); + dreListOfPCM = toLowerCaseOfList(dreListOfPCM); + if (dreListOfPCM.contains(loginUserName)) { + userType = CollectManifestUserTypeEnum.DRE.getValue(); + } + return userType; + } + + private List toLowerCaseOfList(List list) { + List newList = list; + if (CollectionUtil.isNotEmpty(list)) { + newList = list.stream().map(String::toLowerCase).collect(Collectors.toList()); + } + return newList; + } + + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoDetailEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoDetailEOServiceImpl.java new file mode 100644 index 000000000..cd0617cd6 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoDetailEOServiceImpl.java @@ -0,0 +1,178 @@ +package com.jero.modules.todoCenter.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.jero.common.api.vo.Result; +import com.jero.common.exception.JeroBootException; +import com.jero.modules.project.enums.OperatorTypeEnum; +import com.jero.modules.project.enums.RequestSourceEnum; +import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; +import com.jero.modules.todoCenter.mapper.ProcessInfoDetailEOMapper; +import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Date; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Description: 流程信息明细表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ProcessInfoDetailEOServiceImpl extends ServiceImpl implements IProcessInfoDetailEOService { + + /** + * 保存 + * + * @param processInfoDetailEO + * @return + */ + @Override + public void add(ProcessInfoDetailEO processInfoDetailEO) { + Date now = new Date(); + processInfoDetailEO.setCreateTime(now); + processInfoDetailEO.setUpdateTime(now); + save(processInfoDetailEO); + } + + /** + * 更新 + * + * @param processInfoDetailEO + * @return + */ + @Override + public void editById(ProcessInfoDetailEO processInfoDetailEO) { + Date now = new Date(); + processInfoDetailEO.setUpdateTime(now); + saveOrUpdate(processInfoDetailEO); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public ProcessInfoDetailEO queryById(String id) { + return getById(id); + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryList() { + return list(); + } + + @Override + public Result processCall(JSONObject jsonObject) { + String requestSource = jsonObject.getString("requestSource"); + if(StringUtils.isEmpty(requestSource)){ + throw new JeroBootException("请求来源不能为空!"); + } + if(!StringUtils.equals(requestSource, RequestSourceEnum.WORK_FLOW.getValue())){ + throw new JeroBootException("来源有误,没有权限调用该接口!"); + } + + String operatorType = jsonObject.getString("operatorType"); + if(StringUtils.isEmpty(operatorType)){ + throw new JeroBootException("操作类型不能为空!"); + } + + if(StringUtils.equals(operatorType, OperatorTypeEnum.ADD.getValue())){ + JSONArray processInfoDetailList = jsonObject.getJSONArray("processInfoDetailList"); + ProcessInfoDetailEO processInfoDetailEO = null; + List detailEOList = new ArrayList<>(); + for (Object processInfoDetail : processInfoDetailList) { + processInfoDetailEO = JSONObject.parseObject(JSONObject.toJSONString(processInfoDetail), ProcessInfoDetailEO.class); + // 当前流程 当前用户 的数据删掉 确保唯一。 + QueryWrapper deleteWrapper = new QueryWrapper<>(); + deleteWrapper.lambda().eq(ProcessInfoDetailEO::getActiProcInstId,processInfoDetailEO.getActiProcInstId()); + deleteWrapper.lambda().eq(ProcessInfoDetailEO::getUserId,processInfoDetailEO.getUserId()); + deleteWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,processInfoDetailEO.getFlowType()); + this.baseMapper.delete(deleteWrapper); + detailEOList.add(processInfoDetailEO); + } + this.saveBatch(detailEOList); + }else if(StringUtils.equals(operatorType, OperatorTypeEnum.UPDATE.getValue())){ + ProcessInfoDetailEO processInfoDetailEO = JSONObject.parseObject(jsonObject.toString(), ProcessInfoDetailEO.class); + this.baseMapper.updateById(processInfoDetailEO); + }else if(StringUtils.equals(operatorType, OperatorTypeEnum.QUERY.getValue())){ + String userId = jsonObject.getString("userId"); + String flowType = jsonObject.getString("flowType"); + String actiProcInstId = jsonObject.getString("actiProcInstId"); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getUserId,userId); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,flowType); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getActiProcInstId,actiProcInstId); + queryWrapper.isNull("task_id"); + + List processInfoDetailEOList = this.baseMapper.selectList(queryWrapper); + Result> objectResult = new Result<>(); + objectResult.setResult(processInfoDetailEOList); + objectResult.setSuccess(true); + return objectResult; + }else if(StringUtils.equals(operatorType, OperatorTypeEnum.UPDATE_PROCESS_INFO_DETAIL_BY_TASK_ID.getValue())){ + String taskId = jsonObject.getString("taskId"); + String taskStatus = jsonObject.getString("taskStatus"); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(ProcessInfoDetailEO::getStatus,taskStatus); + updateWrapper.set(ProcessInfoDetailEO::getSubmitTime,new Date()); + updateWrapper.eq(ProcessInfoDetailEO::getTaskId,taskId); + this.update(updateWrapper); + } + return new Result<>().success("调用成功!"); + } + + @Override + public void batchInsertDreUserTask(List processInfoDetailEOList) { + processInfoDetailEOList.forEach(detail -> { + QueryWrapper removeWrap = new QueryWrapper<>(); + removeWrap.lambda().eq(ProcessInfoDetailEO::getUserId,detail.getUserId()); + removeWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,detail.getFlowType()); + removeWrap.lambda().eq(ProcessInfoDetailEO::getActiProcInstId,detail.getActiProcInstId()); + removeWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,detail.getTaskDefinitionKey()); + this.remove(removeWrap); + }); + + this.saveBatch(processInfoDetailEOList); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java new file mode 100644 index 000000000..f25a0ac1b --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java @@ -0,0 +1,549 @@ +package com.jero.modules.todoCenter.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.api.vo.Result; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; +import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.enums.OperatorTypeEnum; +import com.jero.modules.project.enums.RequestSourceEnum; +import com.jero.modules.project.enums.TaskStatusEnum; +import com.jero.modules.project.service.IProjectTaskInventoryDetailEOService; +import com.jero.modules.project.service.IProjectTaskInventoryEOService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.jero.modules.todoCenter.enums.TodoCenterStatusEnum; +import com.jero.modules.todoCenter.mapper.ProcessInfoEOMapper; +import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; +import com.jero.modules.todoCenter.vo.ProcessInfoVO; +import com.jero.modules.wkflow.enums.FlowTypeEnum; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Description: 流程信息表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Service +@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class) +public class ProcessInfoEOServiceImpl extends ServiceImpl implements IProcessInfoEOService { + + @Autowired + private IProcessInfoDetailEOService processInfoDetailEOService; + @Autowired + private ISysUserService sysUserService; + @Autowired + private IProjectTaskInventoryDetailEOService projectTaskInventoryDetailEOService; + @Autowired + private IProjectTaskInventoryEOService projectTaskInventoryEOService; + + /** + * 保存 + * + * @param processInfoEO + * @return + */ + @Override + public void add(ProcessInfoEO processInfoEO) { + Date now = new Date(); + processInfoEO.setCreateTime(now); + processInfoEO.setUpdateTime(now); + save(processInfoEO); + } + + /** + * 更新 + * + * @param processInfoEO + * @return + */ + @Override + public void editById(ProcessInfoEO processInfoEO) { + Date now = new Date(); + processInfoEO.setUpdateTime(now); + saveOrUpdate(processInfoEO); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override + public void deleteById(String id) { + removeById(id); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override + public void deleteByIds(List ids) { + removeByIds(ids); + + QueryWrapper detailRemoveWrap = new QueryWrapper<>(); + detailRemoveWrap.lambda().in(ProcessInfoDetailEO::getProcessInfoId,ids); + this.processInfoDetailEOService.remove(detailRemoveWrap); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override + public ProcessInfoEO queryById(String id) { + return getById(id); + } + + /** + * 列表查询 + * + * @return + */ + @Override + public List queryList() { + return list(); + } + + @Override + public Result processCall(JSONObject jsonObject) { + String requestSource = jsonObject.getString("requestSource"); + if(StringUtils.isEmpty(requestSource)){ + throw new JeroBootException("请求来源不能为空!"); + } + if(!StringUtils.equals(requestSource, RequestSourceEnum.WORK_FLOW.getValue())){ + throw new JeroBootException("来源有误,没有权限调用该接口!"); + } + + String operatorType = jsonObject.getString("operatorType"); + if(StringUtils.isEmpty(operatorType)){ + throw new JeroBootException("操作类型不能为空!"); + } + if(StringUtils.equals(operatorType, OperatorTypeEnum.ADD.getValue())){ + Object processInfoJson = jsonObject.get("processInfo"); + ProcessInfoEO processInfo = JSONObject.parseObject( + JSONObject.toJSONString(processInfoJson),ProcessInfoEO.class + ); + this.baseMapper.insert(processInfo); + }else if(StringUtils.equals(operatorType, OperatorTypeEnum.UPDATE_STATUS.getValue())){ + ProcessInfoEO processInfo = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("processInfo")),ProcessInfoEO.class); + this.updateById(processInfo); + } + return new Result<>().success("调用成功!"); + } + + @Override + public IPage projectProcessTodoTaskList(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); + flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); + flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); + flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); + params.put("flowTypeList",flowTypeList); + params.put("taskStatus", TaskStatusEnum.NOT_DONE.getValue()); + params.put("currentUserId",currentUser.getId()); + params.put("qdqrFlowTypeValue",FlowTypeEnum.QDQR.getValue()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryProjectProcessTodoTaskListList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + @Override + public IPage projectProcessDoneProcess(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + List flowTypeList = new ArrayList<>(); + this.setFlowTypeList(flowTypeList); + params.put("flowTypeList",flowTypeList); + params.put("taskStatus", TaskStatusEnum.HAVE_DONE.getValue()); + params.put("currentUserId",currentUser.getId()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryProjectProcessPageList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + @Override + public IPage projectProcessIssuedProcess(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + params.put("createBy",currentUser.getId()); + + List flowTypeList = new ArrayList<>(); + this.setFlowTypeList(flowTypeList); + params.put("flowTypeList",flowTypeList); + params.put("currentUserId",currentUser.getId()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryProjectProcessPageList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + @Override + public void change(Map params) { + //需要清除数据的法规清单ids + String ids = (String)params.get("ids"); + List projectLawsInventoryIdList = Arrays.asList(ids.split(",")); + if(CollectionUtils.isNotEmpty(projectLawsInventoryIdList)){ + //清除清单确认相关数据 + QueryWrapper qdqrDetailRemoveWrap = new QueryWrapper<>(); + qdqrDetailRemoveWrap.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId,projectLawsInventoryIdList); + qdqrDetailRemoveWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.QDQR.getValue()); + this.processInfoDetailEOService.remove(qdqrDetailRemoveWrap); + + //查询出所有的清单确认流程 + QueryWrapper qdqrProcessInfoWrap = new QueryWrapper<>(); + qdqrProcessInfoWrap.lambda().eq(ProcessInfoEO::getFlowType,FlowTypeEnum.QDQR.getValue()); + List qdqrProcessInfoList = this.list(qdqrProcessInfoWrap); + if(CollectionUtils.isNotEmpty(qdqrProcessInfoList)){ + List qdqrProcessInfoIdList = qdqrProcessInfoList.stream().map(ProcessInfoEO::getId).distinct().collect(Collectors.toList()); + + QueryWrapper qdqrDetailQueryWrap = new QueryWrapper<>(); + qdqrDetailQueryWrap.lambda().in(ProcessInfoDetailEO::getProcessInfoId,qdqrProcessInfoIdList); + List qdqrDetailList = this.processInfoDetailEOService.list(qdqrDetailQueryWrap); + if(CollectionUtils.isNotEmpty(qdqrDetailList)){ + qdqrProcessInfoIdList = qdqrProcessInfoIdList.stream().filter(qdqrProcessInfoId -> { + boolean flag = true; + for (ProcessInfoDetailEO processInfoDetailEO : qdqrDetailList) { + if (StringUtils.equals(qdqrProcessInfoId, processInfoDetailEO.getProcessInfoId())) { + flag = false; + break; + } + } + return flag; + }).distinct().collect(Collectors.toList()); + }else { + qdqrProcessInfoIdList.addAll(qdqrProcessInfoIdList); + } + + if(CollectionUtils.isNotEmpty(qdqrProcessInfoIdList)){ + this.baseMapper.deleteBatchIds(qdqrProcessInfoIdList); + } + } + + /** + * 1.清除任务确认相关数据 + * 2.清除设计符合性流程相关数据 + * 3.清除Pre-Homo确认流程相关数据 + * 4.清除验证符合性流程相关数据 + */ + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); + flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); + flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); + flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); + + //根据法规清单id,查询待办中心数据 + QueryWrapper processInfoQueryWrap = new QueryWrapper<>(); + processInfoQueryWrap.lambda().in(ProcessInfoEO::getProjectLawsInventoryId,projectLawsInventoryIdList); + processInfoQueryWrap.lambda().in(ProcessInfoEO::getFlowType,flowTypeList); + List processInfoEOList = this.list(processInfoQueryWrap); + if(CollectionUtils.isNotEmpty(processInfoEOList)){ + List processInfoIdList = processInfoEOList.stream().map(ProcessInfoEO::getId).distinct().collect(Collectors.toList()); + /*QueryWrapper detailRemoveWrap = new QueryWrapper<>(); + detailRemoveWrap.lambda().in(ProcessInfoDetailEO::getProcessInfoId,processInfoIdList); + this.processInfoDetailEOService.remove(detailRemoveWrap);*/ + this.deleteByIds(processInfoIdList); + } + } + } + + @Override + public IPage lawsAssessTodoTaskList(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + params.put("createBy",currentUser.getId()); + params.put("queryType","todoProcess"); + + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.FGYJSJLC.getValue()); + flowTypeList.add(FlowTypeEnum.FGJSPG.getValue()); + params.put("flowTypeList",flowTypeList); + params.put("currentUserId",currentUser.getId()); + params.put("taskStatus", TaskStatusEnum.NOT_DONE.getValue()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryLawsAssessPageList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + @Override + public IPage lawsAssessDoneProcess(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + params.put("createBy",currentUser.getId()); + params.put("queryType","doneProcess"); + + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.FGYJSJLC.getValue()); + flowTypeList.add(FlowTypeEnum.FGJSPG.getValue()); + params.put("flowTypeList",flowTypeList); + params.put("currentUserId",currentUser.getId()); + params.put("taskStatus", TaskStatusEnum.HAVE_DONE.getValue()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryLawsAssessPageList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + @Override + public IPage lawsAssessIssuedProcess(Map params) { + Integer pageNo = Integer.parseInt(params.get("pageNo").toString()); + Integer pageSize = Integer.parseInt(params.get("pageSize").toString()); + String cut = (String) params.get("cut"); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + params.put("createBy",currentUser.getId()); + params.put("queryType","issuedProcess"); + + List flowTypeList = new ArrayList<>(); + flowTypeList.add(FlowTypeEnum.FGYJSJLC.getValue()); + flowTypeList.add(FlowTypeEnum.FGJSPG.getValue()); + params.put("flowTypeList",flowTypeList); + params.put("currentUserId",currentUser.getId()); + + IPage page = new Page(pageNo, pageSize); + IPage result = this.baseMapper.queryLawsAssessPageList(page,params); + this.disposeData(result.getRecords(),cut); + return result; + } + + public void setFlowTypeList(List flowTypeList){ + //flowTypeList.add(FlowTypeEnum.QDQR.getValue()); + flowTypeList.add(FlowTypeEnum.RWQRLC.getValue()); + flowTypeList.add(FlowTypeEnum.SJFHXSHLC.getValue()); + flowTypeList.add(FlowTypeEnum.YZFHXSCLC.getValue()); + flowTypeList.add(FlowTypeEnum.PREHOMOQRLC.getValue()); + } + + /** + * 处理项目流程数据 + * @param datas + * @param cut + */ + public void disposeData(List datas, String cut){ + if(CollectionUtils.isNotEmpty(datas)){ + List processInfoIdList = datas.stream().map(ProcessInfoVO::getId).distinct().collect(Collectors.toList()); + + QueryWrapper processInfoDetailQueryWrap = new QueryWrapper<>(); + processInfoDetailQueryWrap.lambda().in(ProcessInfoDetailEO::getProcessInfoId,processInfoIdList); + List processInfoDetailEOList = this.processInfoDetailEOService.list(processInfoDetailQueryWrap); + + Map> lastAssigneeDetailMap = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if(StringUtils.equals(processInfoDetailEO.getStatus(),TaskStatusEnum.HAVE_DONE.getValue()) && processInfoDetailEO.getSubmitTime() != null){ + flag = true; + } + return flag; + }).collect(Collectors.groupingBy(ProcessInfoDetailEO::getProcessInfoId)); + + Map> assigneeDetailMap = processInfoDetailEOList.stream().filter(processInfoDetailEO -> { + boolean flag = false; + if(StringUtils.equals(processInfoDetailEO.getStatus(),TaskStatusEnum.NOT_DONE.getValue()) && processInfoDetailEO.getSubmitTime() == null){ + flag = true; + } + return flag; + }).collect(Collectors.groupingBy(ProcessInfoDetailEO::getProcessInfoId)); + //设置责任人反馈意见 + this.setPersonChargeFeedback(datas); + + List userIdList = new ArrayList<>(); + datas.forEach(data -> { + //设置上一个操作人。 + for (Map.Entry> detailMap : lastAssigneeDetailMap.entrySet()) { + if(StringUtils.equals(data.getId(),detailMap.getKey())){ + List detailEOList = detailMap.getValue(); + + Collections.sort(detailEOList,new Comparator(){ + @Override + public int compare(ProcessInfoDetailEO o1, ProcessInfoDetailEO o2) { + return o2.getSubmitTime().compareTo(o1.getSubmitTime()); + } + }); + + String userId = detailEOList.get(0).getUserId(); + userIdList.add(userId); + data.setLastAssignee(userId); + break; + } + } + + //设置当前操作人 + for (Map.Entry> detailMap : assigneeDetailMap.entrySet()) { + if(StringUtils.equals(data.getId(),detailMap.getKey())){ + List detailEOList = detailMap.getValue(); + data.setAssignee(detailEOList.stream().map(ProcessInfoDetailEO::getUserId).collect(Collectors.joining(","))); + userIdList.addAll(detailEOList.stream().map(ProcessInfoDetailEO::getUserId).collect(Collectors.toList())); + break; + } + } + }); + + List taskIdList = datas.stream().map(ProcessInfoVO::getTaskId).distinct().collect(Collectors.toList()); + List taskInventoryDetailList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(taskIdList)){ + QueryWrapper taskInventoryDetailQueryWrap = new QueryWrapper<>(); + taskInventoryDetailQueryWrap.lambda().in(ProjectTaskInventoryDetailEO::getTaskId,taskIdList); + taskInventoryDetailList = this.projectTaskInventoryDetailEOService.list(taskInventoryDetailQueryWrap); + } + List finalTaskInventoryDetailList = taskInventoryDetailList; + + List sysUserList = this.sysUserService.querySysUserListByIdList(userIdList); + + datas.forEach(data -> { + if(StringUtils.isNotEmpty(data.getFlowType())){ + data.setFlowTypeShow(FlowTypeEnum.getTextByValue(data.getFlowType(),cut)); + } + if(StringUtils.isNotEmpty(data.getStatus())){ + data.setStatusShow(TodoCenterStatusEnum.getTextByValue(data.getStatus(),cut)); + } + + if(CollectionUtils.isNotEmpty(sysUserList)){ + if(StringUtils.isNotEmpty(data.getLastAssignee())){ + String lastUserName = sysUserList.stream().filter(sysUser -> { + boolean flag = false; + if (StringUtils.equals(data.getLastAssignee(), sysUser.getId())) { + flag = true; + } + return flag; + }).map(SysUser::getUsername).collect(Collectors.joining(",")); + data.setLastAssigneeName(lastUserName); + } + //如果流程没有结束,才可以展示当前处理人。 + if(!StringUtils.equals(data.getStatus(),TodoCenterStatusEnum.COMPLETED.getValue())){ + if(StringUtils.isNotEmpty(data.getAssignee())){ + String[] assigneeArr = data.getAssignee().split(","); + String currentUserName = sysUserList.stream().filter(sysUser -> { + boolean flag = false; + for (String assignee : assigneeArr) { + if (StringUtils.equals(assignee, sysUser.getId())) { + flag = true; + } + } + return flag; + }).map(SysUser::getUsername).collect(Collectors.joining(",")); + data.setAssigneeName(currentUserName); + } + } + } + data.setProjectName(data.getProjectName() + "-" + data.getYearName()); + + //设置任务清单明细表id + if(CollectionUtils.isNotEmpty(finalTaskInventoryDetailList)){ + String primaryKeyId = finalTaskInventoryDetailList.stream().filter(taskInventoryDetail -> { + boolean flag = false; + if (StringUtils.equals(data.getTaskId(), taskInventoryDetail.getTaskId())) { + flag = true; + } + return flag; + }).map(ProjectTaskInventoryDetailEO::getId).collect(Collectors.joining(",")); + data.setPrimaryKeyId(primaryKeyId); + } + }); + } + } + + /** + * 设置符合性流程中责任人反馈意见 + * @param datas + */ + public void setPersonChargeFeedback(List datas){ + //符合性流程实例id + List complianceProcessPrcIdList = datas.stream().filter(data -> { + boolean designFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.SJFHXSHLC.getValue()); + boolean preHomoFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.PREHOMOQRLC.getValue()); + boolean verifyFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.YZFHXSCLC.getValue()); + boolean flag = false; + if(designFlowFlag || preHomoFlowFlag || verifyFlowFlag){ + flag = true; + } + return flag; + }).map(ProcessInfoVO::getActiProcInstId).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(complianceProcessPrcIdList)){ + QueryWrapper taskInventoryQueryWrap = new QueryWrapper<>(); + taskInventoryQueryWrap.and(queryWrap -> { + queryWrap.lambda().in(ProjectTaskInventoryEO::getDesignPId,complianceProcessPrcIdList) + .or().in(ProjectTaskInventoryEO::getPrehomoPId,complianceProcessPrcIdList) + .or().in(ProjectTaskInventoryEO::getVerifyPId,complianceProcessPrcIdList); + }); + //查询出符合性流程相关的任务清单信息。 + List taskInventoryList = this.projectTaskInventoryEOService.list(taskInventoryQueryWrap); + + datas.forEach(data -> { + boolean designFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.SJFHXSHLC.getValue()); + boolean preHomoFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.PREHOMOQRLC.getValue()); + boolean verifyFlowFlag = StringUtils.equals(data.getFlowType(),FlowTypeEnum.YZFHXSCLC.getValue()); + String personChargeFeedback = taskInventoryList.stream().filter(taskInventory -> { + boolean flag = false; + if(designFlowFlag){ + if(StringUtils.equals(data.getActiProcInstId(),taskInventory.getDesignPId())){ + flag = true; + } + }else if(preHomoFlowFlag){ + if(StringUtils.equals(data.getActiProcInstId(),taskInventory.getPrehomoPId())){ + flag = true; + } + }else if(verifyFlowFlag){ + if(StringUtils.equals(data.getActiProcInstId(),taskInventory.getVerifyPId())){ + flag = true; + } + } + return flag; + }).map(ProjectTaskInventoryEO::getDesignPersonChargeFeedback).collect(Collectors.joining(",")); + + data.setPersonChargeFeedback(personChargeFeedback); + }); + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ParamsManifestTodoCenterEOPage.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ParamsManifestTodoCenterEOPage.java new file mode 100644 index 000000000..98079f027 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ParamsManifestTodoCenterEOPage.java @@ -0,0 +1,45 @@ +package com.jero.modules.todoCenter.vo; + +import lombok.Data; + +@Data +public class ParamsManifestTodoCenterEOPage { + /** + * 参数清单id + */ + private String id; + + /** + * 相关项目名称 + */ + private String projectName; + + /** + * 参数清单标题 + */ + private String title; + + /** + * 相关项目版本 + */ + private String projectVersion; + + /** + * 待发起数量 包括状态:待发起收集,变更,工程接口人退回 + */ + private Integer waitCollectNum; + + /** + * 待工程接口人处理数量(即待分配) 包括状态:待工程接口人处理,填写人退回 + */ + private Integer waitSdtNum; + + /** + * 待填写数量 包括状态:待填写,认证工程师退回 + */ + private Integer waitFillNum; + + private int pageNo; + private int pageSize; + private String state; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ProcessInfoVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ProcessInfoVO.java new file mode 100644 index 000000000..e9a5287cc --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ProcessInfoVO.java @@ -0,0 +1,103 @@ +package com.jero.modules.todoCenter.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * 流程信息表VO类 + */ +@Data +public class ProcessInfoVO implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + private String id; + + /**创建人*/ + private String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private java.util.Date createTime; + + /**更新人*/ + private String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private java.util.Date updateTime; + + /**所属部门*/ + private String sysOrgCode; + + /**项目库id*/ + private String projectLibraryId; + + /**法规清单id*/ + private String projectLawsInventoryId; + + /**文档库id/标准id*/ + private String bussDocumentLibraryId; + + /**流程实例id*/ + private String actiProcInstId; + + /**流程类型*/ + private String flowType; + + /**截止日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private java.util.Date endTime; + + /**任务状态*/ + private String status; + + /**流程编号**/ + private String prcNum; + + /**流程名称*/ + private String prcName; + + /**流程类型展示字段*/ + private String flowTypeShow; + + /**任务状态展示字段*/ + private String statusShow; + + /**上一个操作人 用户id*/ + private String lastAssignee; + private String lastAssigneeName; + + /**当前操作人/代理人 用户id*/ + private String assignee; + private String assigneeName; + + /**标准编号*/ + private String serialNumber; + /**标准标题*/ + private String title; + /**项目名称*/ + private String projectName; + /**年份*/ + private String yearName; + /**待办id*/ + private String taskId; + /**任务节点定义key*/ + private String taskDefinitionKey; + /**项目名称id*/ + private String projectNameId; + /**目标市场*/ + private String targetMarket; + /**studio*/ + private String studioEngineer; + /**任务清单明细表id,任务清单明细数据与待办中心明细表 是taskId一对一的关系**/ + private String primaryKeyId; + /**符合性流程:责任人填写反馈意见*/ + private String personChargeFeedback; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java index d41f6e887..81d073225 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/enums/FlowTypeEnum.java @@ -1,16 +1,21 @@ package com.jero.modules.wkflow.enums; +import com.jero.common.constant.enums.CutEnum; +import com.jero.modules.todoCenter.enums.TodoCenterStatusEnum; +import org.apache.commons.lang3.StringUtils; + /** * 流程类型枚举类 */ public enum FlowTypeEnum { - RWQRLC("1","任务确认流程","RWQRLC","任务确认流程","rwqrlc"), - SJFHXSHLC("2","设计符合性审查流程","SJFHXSHLC","设计符合性审查流程","sjfhxlc"), - PREHOMOQRLC("3","prehomo确认流程","PREHOMOQRLC","prehomo确认流程","prehomoqrlc"), - YZFHXSCLC("4","验证符合性审查流程","YZFHXSCLC","验证符合性审查流程","yzfhxsclc"), - FGYJSJLC("5","法规意见收集流程","FGYJSJLC","法规意见收集流程","fgyjsjlc"), - FGJSPG("6","法规技术评估","FGJSPG","法规技术评估流程","fgjspglc"), + RWQRLC("1","任务确认流程","RWQRLC","任务确认流程","rwqrlc","清单任务确认","List task Confirmation"), + SJFHXSHLC("2","设计符合性审查流程","SJFHXSHLC","设计符合性审查流程","sjfhxlc","设计符合性确认","Design conformance verification"), + PREHOMOQRLC("3","prehomo确认流程","PREHOMOQRLC","prehomo确认流程","prehomoqrlc","Pre-Homo确认","The Pre - Homo confirmation"), + YZFHXSCLC("4","验证符合性审查流程","YZFHXSCLC","验证符合性审查流程","yzfhxsclc","验证符合性确认","Verify conformance confirmation"), + FGYJSJLC("5","法规意见收集流程","FGYJSJLC","法规意见收集流程","fgyjsjlc","法规意见收集","Collection of Legislative Comments"), + FGJSPG("6","法规技术评估流程","FGJSPG","法规技术评估流程","fgjspglc","法规技术评估","Regulatory and technical assessment"), + QDQR("10","清单确认","QDQR","清单确认流程","qdqr","法规清单确认","Regulation list confirmation"), ; private String value; @@ -18,13 +23,17 @@ public enum FlowTypeEnum { private String prcNum; private String prcName; private String processDefinitionKey; + private String cnName; + private String enName; - private FlowTypeEnum(String value, String lable, String prcNum, String prcName, String processDefinitionKey) { + private FlowTypeEnum(String value, String lable, String prcNum, String prcName, String processDefinitionKey,String cnName,String enName) { this.value = value; this.lable = lable; this.prcNum = prcNum; this.prcName = prcName; this.processDefinitionKey = processDefinitionKey; + this.cnName = cnName; + this.enName = enName; } public String getValue() { return value; @@ -43,4 +52,26 @@ public enum FlowTypeEnum { public String getProcessDefinitionKey() { return processDefinitionKey; } + + public String getCnName() { + return cnName; + } + + public String getEnName() { + return enName; + } + + public static String getTextByValue(String value, String cut) { + FlowTypeEnum[] values = values(); + for (FlowTypeEnum flowTypeEnum : values) { + if (flowTypeEnum.value.equals(value)) { + if(StringUtils.equals(cut, CutEnum.CN.getValue())){ + return flowTypeEnum.cnName; + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + return flowTypeEnum.enName; + } + } + } + return null; + } } diff --git a/jero-web/src/views/dashboard/components/myList.vue b/jero-web/src/views/dashboard/components/myList.vue index 0779fe942..b3e9180d5 100644 --- a/jero-web/src/views/dashboard/components/myList.vue +++ b/jero-web/src/views/dashboard/components/myList.vue @@ -10,11 +10,17 @@
- {{item.prcName}} - + + {{item.flowTypeShow+'-'+item.projectName}} + + + {{item.flowTypeShow+'-'+item.serialNumber}} + +
- {{item.creatTime}} + {{item.endTime}}
{{$t('Pending')}} @@ -43,9 +49,13 @@ dataSource: [], loading: false, prcTypeName: { - 1: this.$t('taskConfirmationProcess'), - 5:this.$t('collectionOfRegulatoryOpinionsProcess'), - 6:this.$t('regulatoryTechnologyAssessmentProcess') + 1: this.$t('listTaskConfirmation'), + 2: this.$t('designComplianceReview'), + 3: this.$t('preHomeConfirmation'), + 4: this.$t('verificationComplianceReview'), + 10: this.$t('confirmationOfRegulationsList'), + 5: this.$t('collectionOfRegulatoryOpinionsProcess'), + 6: this.$t('regulatoryTechnologyAssessmentProcess') } } }, @@ -74,11 +84,11 @@ queryProcess() { this.loading = true let parmes = {} - parmes.current = this.pageNo - parmes.size = this.pageSize - parmes.userId = this.userInfo().userId - postAction('task/todoTaskList', parmes).then((res) => { - this.dataSource = res.list || [] + parmes.pageNo = this.pageNo + parmes.pageSize = this.pageSize + // parmes.userId = this.userInfo().userId + getAction('/todoCenter/projectProcess/todoTaskList', parmes).then((res) => { + this.dataSource = res.result.records || [] this.loading = false }) }, @@ -88,29 +98,138 @@ }) }, prcClick(row) { - // let index = row.taskIds.lastIndexOf(',') - // row.taskIds = row.taskIds.slice(0, index) + let query = {} row.router = this.$route.path - if (row.prcType == '1') { + if (row.flowType == '1') { + query = { + taskDefinitionKey: row.taskDefinitionKey, + taskIds: row.taskId, + prcType: row.flowType, + prcNum: row.prcNum, + isTrue: true + } let newUrl = this.$router.resolve({ path: '/handshakeProcess', - query: row + query: query }) window.open(newUrl.href, '_blank') - } else if (row.prcType == '5') { + } else if (row.flowType == '10') { let newUrl = this.$router.resolve({ - path: '/regulatoryProcessReview', - query: row + path: '/ProjectDetails', + query: { + id: row.projectLibraryId, + projectName: row.projectName, + projectNameId: row.projectNameId, + targetMarket: row.targetMarket, + studioEngineer: row.studioEngineer, + type: '102' + } }) window.open(newUrl.href, '_blank') - } else if (row.prcType == '6') { + } else if (row.flowType == '2') { + row.taskId = row.taskId + '' + if (row.taskId.length > 30) { + row.taskId = '' + } + query = { + router: row.router, + taskIds: row.taskId, + actiProcInstId: row.actiProcInstId, + projectTaskInventoryId: row.projectLawsInventoryId, + projectLibraryId: row.projectLibraryId, + id: row.projectLibraryId, + studioEngineer: row.studioEngineer, + serialNumber: row.serialNumber, + TaskKey: row.taskDefinitionKey, + isDisplay: true, + flowType: 2, + Sponsor: 'designInitiatorName', + personLiable: 'designDutyName', + typeOfDeliverables: 'designDeliverableTypeName', + deliverableTemplate: 'designDeliverableTemplate', + DueDate: 'designDueDate', + remarks: 'designRemark', + projectName: row.projectName, + targetMarket: row.targetMarket, + projectNameId: row.projectNameId, + primaryKeyId: row.primaryKeyId, + PersonChargeFeedback: row.personChargeFeedback + } let newUrl = this.$router.resolve({ - path: '/evaluationProcess', - query: row + path: '/taskListProcess', + query: query + }) + window.open(newUrl.href, '_blank') + } else if (row.flowType == '3') { + row.taskId = row.taskId + '' + if (row.taskId.length > 30) { + row.taskId = '' + } + query = { + router: row.router, + taskIds: row.taskId, + actiProcInstId: row.actiProcInstId, + projectTaskInventoryId: row.projectLawsInventoryId, + studioEngineer: row.studioEngineer, + projectLibraryId: row.projectLibraryId, + serialNumber: row.serialNumber, + TaskKey: row.taskDefinitionKey, + flowType: 3, + isDisplay: true, + id: row.projectLibraryId, + Sponsor: 'prehomoInitiatorName', + personLiable: 'prehomoDutyName', + typeOfDeliverables: 'prehomoDeliverableTypeName', + deliverableTemplate: 'prehomoDeliverableTemplate', + DueDate: 'prehomoDueDate', + remarks: 'prehomoRemark', + projectName: row.projectName, + targetMarket: row.targetMarket, + projectNameId: row.projectNameId, + primaryKeyId: row.primaryKeyId, + PersonChargeFeedback: row.personChargeFeedback + } + let newUrl = this.$router.resolve({ + path: '/taskListProcess', + query: query + }) + window.open(newUrl.href, '_blank') + } else if (row.flowType == '4') { + row.taskId = row.taskId + '' + if (row.taskId.length > 30) { + row.taskId = '' + } + query = { + router: row.router, + taskIds: row.taskId, + actiProcInstId: row.actiProcInstId, + id: row.projectLibraryId, + projectLibraryId: row.projectLibraryId, + studioEngineer: row.studioEngineer, + serialNumber: row.serialNumber, + projectTaskInventoryId: row.projectLawsInventoryId, + TaskKey: row.taskDefinitionKey, + flowType: 4, + isDisplay: true, + Sponsor: 'verifyInitiatorName', + personLiable: 'verifyDutyName', + typeOfDeliverables: 'verifyDeliverableTypeName', + deliverableTemplate: 'verifyDeliverableTemplate', + DueDate: 'verifyDueDate', + remarks: 'verifyRemark', + projectName: row.projectName, + targetMarket: row.targetMarket, + projectNameId: row.projectNameId, + primaryKeyId: row.primaryKeyId, + PersonChargeFeedback: row.personChargeFeedback + } + let newUrl = this.$router.resolve({ + path: '/taskListProcess', + query: query }) window.open(newUrl.href, '_blank') } - } + }, } } @@ -167,6 +286,7 @@ text-overflow: ellipsis; white-space: nowrap; } + /*.top-admin {*/ /* font-size: 16px;*/ /* font-family: Blue Sky Noto;*/ diff --git a/jero-web/src/views/processCenter/ProcessMapping.vue b/jero-web/src/views/processCenter/ProcessMapping.vue index 15cdff2b2..3a879812b 100644 --- a/jero-web/src/views/processCenter/ProcessMapping.vue +++ b/jero-web/src/views/processCenter/ProcessMapping.vue @@ -16,7 +16,7 @@ data() { return { name: '', - actUrl: 'http://10.0.1.13:17210/bat-wkflow/modeler.html?modelId='//本地 + actUrl: 'http://localhost:17210/bat-wkflow/modeler.html?modelId='//本地 // actUrl: 'http://10.255.35.25:8082/modeler.html?modelId=' //正式 // actUrl: 'http://10.255.128.148:8888/modeler.html?modelId=' //测试 } diff --git a/jero-web/src/views/processCenter/components/evaluatorFeedback.vue b/jero-web/src/views/processCenter/components/evaluatorFeedback.vue index ef8d4b8d1..66b4c56aa 100644 --- a/jero-web/src/views/processCenter/components/evaluatorFeedback.vue +++ b/jero-web/src/views/processCenter/components/evaluatorFeedback.vue @@ -156,12 +156,13 @@
-
+
{{$t('sponsorReview')}}
- +
@@ -175,6 +176,18 @@
+ + + + + + + + + + + +
@@ -259,7 +272,8 @@ }, disabled: false, uploadIndex: '', - dataList: [] + dataList: [], + isTrue: false } }, mounted() { @@ -283,8 +297,14 @@ }) if (this.$route.query.taskDefinitionKey == 'pgrqr') { this.disabled = false + if (this.$route.query.isDisabled) { + this.disabled = JSON.parse(this.$route.query.isDisabled) + } } else { this.disabled = true + if (this.$route.query.isDisabled) { + this.isTrue = JSON.parse(this.$route.query.isDisabled) + } } }, methods: { @@ -443,4 +463,5 @@ white-space: normal; word-break: break-all; } + \ No newline at end of file diff --git a/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue b/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue index 3b8473872..e3cdc3930 100644 --- a/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue +++ b/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue @@ -74,7 +74,9 @@ -- - {{text == 'Compliance' ? $t('accord'):$t('nonConformity')}} + {{$t('accord')}} + {{$t('nonConformity')}} + -- { + Object.keys(this.dataSource[i]).forEach(res => { if (this.dataSource[i][res] && typeof this.dataSource[i][res] == 'string') { this.dataSource[i][res] = this.dataSource[i][res].replace(/\"/g, '“') this.dataSource[i][res] = this.dataSource[i][res].replace(/\'/g, '‘') } }) } - if (this.$route.query.taskDefinitionKey == 'pgrqr'){ + if (this.$route.query.taskDefinitionKey == 'pgrqr') { let feedbackTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') for (let i = 0; i < this.dataSource.length; i++) { this.dataSource[i].feedbackTime = feedbackTime @@ -361,7 +446,7 @@ callBack && callBack(this.dataSource) }, preservationData(callBack) { - if (this.$route.query.taskDefinitionKey == 'pgrqr'){ + if (this.$route.query.taskDefinitionKey == 'pgrqr') { let feedbackTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') for (let i = 0; i < this.dataSource.length; i++) { this.dataSource[i].feedbackTime = feedbackTime diff --git a/jero-web/src/views/processCenter/components/feedbackInformation.vue b/jero-web/src/views/processCenter/components/feedbackInformation.vue index c86a652cb..b90f15da4 100644 --- a/jero-web/src/views/processCenter/components/feedbackInformation.vue +++ b/jero-web/src/views/processCenter/components/feedbackInformation.vue @@ -12,18 +12,18 @@ {{$t('feedbackPoint')+(index+1)}}
- * + * {{$t('relevantSections')}}
- - - - - +
- -
-
- {{$t('clauseContent')}} -
- - - -
-
-
- - -
-
- * - {{$t('questionsSuggestions')}} -
- - - -
-
- -
-
- * - {{$t('reason')}} -
- - - -
-
-
-
@@ -112,6 +55,65 @@
+ + +
+
+ * + {{$t('questionsSuggestions')}} +
+ + + +
+
+ +
+
+ * + {{$t('reason')}} +
+ + + +
+
+
+ + +
+
+ {{$t('clauseContent')}} +
+ + + +
+
+
+
@@ -166,7 +168,9 @@ } this.formInline = { ...this.formInline } }) - + if (this.$route.query.isDisabled) { + this.disabled = JSON.parse(this.$route.query.isDisabled) + } }, methods: { clickButtonToUpload(item, index) { @@ -301,4 +305,7 @@ margin-left: 8px; cursor: pointer; } + ::v-deep .ant-input-disabled{ + color: #000F16; + } \ No newline at end of file diff --git a/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue b/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue index fc760921f..4a32cd3bb 100644 --- a/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue +++ b/jero-web/src/views/processCenter/components/reviewedByThePersonInCharge.vue @@ -72,7 +72,7 @@ - +
* @@ -88,16 +88,29 @@
+ +
+
+ {{$t('feedbackFromTheEngineer')}} +
+ + + {{formInline.engineerFeedbackContent}} + + +
+
- + {{$t('Deliverables')}}
- + diff --git a/jero-web/src/views/processCenter/components/taskCirculationHistory.vue b/jero-web/src/views/processCenter/components/taskCirculationHistory.vue index 8c64c8228..145539870 100644 --- a/jero-web/src/views/processCenter/components/taskCirculationHistory.vue +++ b/jero-web/src/views/processCenter/components/taskCirculationHistory.vue @@ -80,7 +80,7 @@ methods: { getList() { let query = { - actiProcInstId: this.$route.query.actiProcInstId + actiProcInstId: this.$route.query.actiProcInstId || this.$route.query.prcId } this.loading = true getAction('/wkflow/processHistoryEO/list', query).then((res) => { diff --git a/jero-web/src/views/processCenter/processForm/evaluationProcess/index.vue b/jero-web/src/views/processCenter/processForm/evaluationProcess/index.vue index 7f592203a..caf22adff 100644 --- a/jero-web/src/views/processCenter/processForm/evaluationProcess/index.vue +++ b/jero-web/src/views/processCenter/processForm/evaluationProcess/index.vue @@ -26,7 +26,7 @@ :title="$t('evaluatorFeedback')" /> +
@@ -22,6 +23,7 @@ + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/SentList.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/SentList.vue new file mode 100644 index 000000000..c0b9b4839 --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/SentList.vue @@ -0,0 +1,354 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/dealtWith.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/dealtWith.vue new file mode 100644 index 000000000..9d8712a97 --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/dealtWith.vue @@ -0,0 +1,331 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/doneList.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/doneList.vue new file mode 100644 index 000000000..e915c0064 --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/doneList.vue @@ -0,0 +1,355 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/index.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/index.vue new file mode 100644 index 000000000..a97b542c2 --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/index.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/SentList.vue b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/SentList.vue new file mode 100644 index 000000000..f162279f5 --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/SentList.vue @@ -0,0 +1,229 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/dealtWith.vue b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/dealtWith.vue new file mode 100644 index 000000000..e12a22a1b --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/dealtWith.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/doneList.vue b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/doneList.vue new file mode 100644 index 000000000..7617fae4f --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/doneList.vue @@ -0,0 +1,229 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/index.vue b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/index.vue new file mode 100644 index 000000000..3b8ff22f4 --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/index.vue @@ -0,0 +1,174 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/taskConfirmation/components/batchProcessing.vue b/jero-web/src/views/toDoCenter/taskConfirmation/components/batchProcessing.vue new file mode 100644 index 000000000..15f1ca777 --- /dev/null +++ b/jero-web/src/views/toDoCenter/taskConfirmation/components/batchProcessing.vue @@ -0,0 +1,250 @@ + + + + + \ No newline at end of file diff --git a/jero-web/src/views/toDoCenter/taskConfirmation/index.vue b/jero-web/src/views/toDoCenter/taskConfirmation/index.vue new file mode 100644 index 000000000..cb80eca13 --- /dev/null +++ b/jero-web/src/views/toDoCenter/taskConfirmation/index.vue @@ -0,0 +1,351 @@ + + + + + \ No newline at end of file