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-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java index 9668a5a92..f9b86374a 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java @@ -5,13 +5,14 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.common.constant.enums.CutEnum; +import com.jero.modules.system.enums.SysPermissionEnum; +import com.jero.modules.system.mapper.TodoCenterMapper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; -import org.apache.shiro.authz.annotation.RequiresRoles; import com.jero.common.api.vo.Result; import com.jero.common.constant.CommonConstant; -import com.jero.common.system.util.JwtUtil; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.MD5Util; import com.jero.common.util.oConvertUtils; @@ -54,6 +55,9 @@ public class SysPermissionController { @Autowired private ISysDepartPermissionService sysDepartPermissionService; + @Autowired + private TodoCenterMapper todoCenterMapper; + /** * 加载数据节点 * @@ -641,6 +645,47 @@ public class SysPermissionController { if (isWWWHttpUrl(permission.getUrl())) { meta.put("url", permission.getUrl()); } + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + Map params = new HashMap<>(); + params.put("currentUserId",currentUser.getId()); + + List flowTypeList = new ArrayList<>(); + //项目法规任务 + if(StringUtils.equals(permission.getId(), SysPermissionEnum.PROJECT_REGULATION_TASKS.getId())){ + flowTypeList.add("1"); + flowTypeList.add("2"); + flowTypeList.add("3"); + flowTypeList.add("4"); + flowTypeList.add("10"); + params.put("flowTypeList",flowTypeList); + //存在待办任务标识,true为有 + boolean existTaskFlag = false; + int result = todoCenterMapper.todoCenterTaskCount(params); + if(result > 0){ + existTaskFlag = true; + } + //查询当前登录用户是否有项目法规任务 + meta.put("existTask",existTaskFlag); + } + //法规评估任务 + if(StringUtils.equals(permission.getId(), SysPermissionEnum.REGULATORY_ASSESSMENT_TASKS.getId())){ + flowTypeList.add("5"); + flowTypeList.add("6"); + params.put("flowTypeList",flowTypeList); + int result = todoCenterMapper.todoCenterTaskCount(params); + boolean existTaskFlag = false; + if(result > 0){ + existTaskFlag = true; + } + meta.put("existTask",existTaskFlag); + } + //项目参数任务 + if(StringUtils.equals(permission.getId(), SysPermissionEnum.PROJECT_PARAMETER_TASKS.getId())){ + boolean existTaskFlag = false; + meta.put("existTask",existTaskFlag); + } json.put("meta", meta); } diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/SysPermissionEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/SysPermissionEnum.java new file mode 100644 index 000000000..951afcc20 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/SysPermissionEnum.java @@ -0,0 +1,35 @@ +package com.jero.modules.system.enums; + +/** + * 菜单权限枚举类 + * @Author: wzj + * @Date: 2022/10/26 16:14 + **/ +public enum SysPermissionEnum { + + PROJECT_REGULATION_TASKS("项目法规任务","1580735287309119489",""), + REGULATORY_ASSESSMENT_TASKS("法规评估任务","1580735611793059842",""), + PROJECT_PARAMETER_TASKS("项目参数任务","1580735965892980738",""); + + private String name; + private String id; + private String value; + + private SysPermissionEnum(String name,String id, String value) { + this.name = name; + this.id = id; + this.value = value; + } + + public String getName() { + return name; + } + + public String getValue() { + return value; + } + + public String getId() { + return id; + } +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/TodoCenterMapper.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/TodoCenterMapper.java new file mode 100644 index 000000000..b6e0e59ca --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/TodoCenterMapper.java @@ -0,0 +1,14 @@ +package com.jero.modules.system.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * 待办中心mapper层 + * @Author: wzj + * @Date: 2022/10/26 16:41 + **/ +public interface TodoCenterMapper { + int todoCenterTaskCount(@Param("params") Map params); +} diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/TodoCenterMapper.xml b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/TodoCenterMapper.xml new file mode 100644 index 000000000..29d53a4d9 --- /dev/null +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/TodoCenterMapper.xml @@ -0,0 +1,21 @@ + + + + + + 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} order by submit_time desc 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} order by submit_time desc 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..72124c3b0 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoDetailEOService.java @@ -0,0 +1,85 @@ +package com.jero.modules.todoCenter.service; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +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); + + /** + * 更新待办中心流程信息明细表,处理人 + * @param projectLawsInventoryEO + * @param pId + * @param flowType + */ + void updateProcessInfoDetailUserId(ProjectLawsInventoryEO projectLawsInventoryEO, String pId, String flowType); +} 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..65fa57838 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/IProcessInfoEOService.java @@ -0,0 +1,122 @@ +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); + + Result initHistoryData(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..feb2a195e --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoDetailEOServiceImpl.java @@ -0,0 +1,226 @@ +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.entity.ProjectLawsInventoryEO; +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 com.jero.modules.wkflow.enums.DesignComplianceNodeEnum; +import com.jero.modules.wkflow.enums.FlowTypeEnum; +import org.apache.commons.collections4.CollectionUtils; +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); + } + + @Override + public void updateProcessInfoDetailUserId(ProjectLawsInventoryEO projectLawsInventoryEO, String pId, String flowType) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getActiProcInstId,pId); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,flowType); + List processInfoDetailEOList = this.list(queryWrapper); + if(CollectionUtils.isNotEmpty(processInfoDetailEOList)){ + for (ProcessInfoDetailEO processInfoDetailEO : processInfoDetailEOList) { + if(StringUtils.equals(flowType, FlowTypeEnum.SJFHXSHLC.getValue())){ + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.THE_RESPONSIBLE_PERSON_HANDLES_THE_TASK.getKey())){ + //更新责任人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getDesignDutyId()); + } + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.SPONSOR_REVIEW.getKey())){ + //更新发起人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getDesignInitiatorId()); + } + } + if(StringUtils.equals(flowType, FlowTypeEnum.PREHOMOQRLC.getValue())){ + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.THE_RESPONSIBLE_PERSON_HANDLES_THE_TASK.getKey())){ + //更新责任人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getPrehomoDutyId()); + } + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.SPONSOR_REVIEW.getKey())){ + //更新发起人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getPrehomoInitiatorId()); + } + } + + if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.THE_RESPONSIBLE_PERSON_HANDLES_THE_TASK.getKey())){ + //更新责任人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getVerifyDutyId()); + } + if(StringUtils.equals(processInfoDetailEO.getTaskDefinitionKey(), DesignComplianceNodeEnum.SPONSOR_REVIEW.getKey())){ + //更新发起人的任务 + processInfoDetailEO.setUserId(projectLawsInventoryEO.getVerifyInitiatorId()); + } + } + this.baseMapper.updateById(processInfoDetailEO); + } + } + } +} 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..203a27fe5 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java @@ -0,0 +1,1063 @@ +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.lawsOpinionGather.entity.LawsOpinionGatherEO; +import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService; +import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; +import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO; +import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService; +import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectTaskInventoryDetailEO; +import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.enums.*; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.project.service.IProjectLibraryBaseService; +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 com.jero.modules.wkflow.feginClient.impl.WorkFlowFeignClientImpl; +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.text.ParseException; +import java.text.SimpleDateFormat; +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; + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + @Autowired + private WorkFlowFeignClientImpl workFlowFeignClient; + @Autowired + private IProjectLibraryBaseService projectLibraryBaseService; + @Autowired + private ILawsOpinionGatherEOService lawsOpinionGatherEOService; + @Autowired + private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService; + @Autowired + private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService; + + /** + * 保存 + * + * @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)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date currentDate = new Date(); + try { + currentDate = sdf.parse(sdf.format(currentDate)); + } catch (ParseException e) { + e.printStackTrace(); + } + + 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); + + Date finalCurrentDate = currentDate; + 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); + } + + //判断当前任务是否过期 + Date endTime = data.getEndTime(); + try { + endTime = sdf.parse(sdf.format(endTime)); + } catch (ParseException e) { + e.printStackTrace(); + } + if(finalCurrentDate.after(endTime) || finalCurrentDate.equals(endTime)){ + data.setEndTimePastDueFlag(true); + } + }); + } + } + + /** + * 设置符合性流程中责任人反馈意见 + * @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); + }); + } + } + + + @Override + public Result initHistoryData(Map params) { + /** + * disposeType:处理类型 + * value: + * 10:清单确认 + * 1:任务确认 + * 2:设计符合性 + * 3:prehomo确认 + * 4:验证符合性 + * 5:法规意见收集 + * 6:法规技术评估 + * 多个之间使用英文逗号分隔. + */ + String disposeType = (String) params.get("disposeType"); + //查询出所有的法规清单数据 + List projectLawsInventoryEOList = this.projectLawsInventoryEOService.list(); + //查询出所有项目库信息 + List projectLibraryBaseList = this.projectLibraryBaseService.list(); + + //1、清单确认 + if(StringUtils.contains(disposeType,FlowTypeEnum.QDQR.getValue())){ + this.initQdqr(projectLawsInventoryEOList,projectLibraryBaseList); + } + + //2.任务确认 + if(StringUtils.contains(disposeType,FlowTypeEnum.RWQRLC.getValue())){ + this.initRwqr(projectLawsInventoryEOList); + } + + List taskInventoryEOList = this.projectTaskInventoryEOService.list(); + + QueryWrapper taskInventoryDetailQueryWrap = new QueryWrapper<>(); + taskInventoryDetailQueryWrap.lambda().eq(ProjectTaskInventoryDetailEO::getStatus,TaskStatusEnum.NOT_DONE.getValue()); + List taskInventoryDetailEOList = this.projectTaskInventoryDetailEOService.list(taskInventoryDetailQueryWrap); + + //3.设计符合性流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.SJFHXSHLC.getValue())){ + this.initConformance(FlowTypeEnum.SJFHXSHLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //4.prehomo流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + this.initConformance(FlowTypeEnum.PREHOMOQRLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //5.验证符合性流程 + if(StringUtils.contains(disposeType,FlowTypeEnum.YZFHXSCLC.getValue())){ + this.initConformance(FlowTypeEnum.YZFHXSCLC.getValue(),projectLawsInventoryEOList,taskInventoryEOList,taskInventoryDetailEOList); + } + //6.法规技术评估 + if(StringUtils.contains(disposeType,FlowTypeEnum.FGJSPG.getValue())){ + this.initFgjspg(); + } + //7.法规意见收集 + if(StringUtils.contains(disposeType,FlowTypeEnum.FGYJSJLC.getValue())){ + this.initFgyjsj(); + } + + //8.处理之前流程数据在发起的时候,在bus_process_new中没有任务数据 + if(StringUtils.contains(disposeType,"disposeBusProcessNew")){ + this.workFlowFeignClient.dispostHistoryBusProcessNewData(); + } + return Result.OK("初始化数据成功",disposeType); + } + + /** + * 初始化清单确认 + * @param projectLawsInventoryEOList + * @param projectLibraryBaseList + */ + public void initQdqr(List projectLawsInventoryEOList,List projectLibraryBaseList){ + Map> qdqrMap = projectLawsInventoryEOList.stream().filter(lawsInventory -> { + boolean flag = false; + if (StringUtils.equals(lawsInventory.getInventoryAffirmStatus(), InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue())) { + flag = true; + } + return flag; + }).collect(Collectors.groupingBy(ProjectLawsInventoryEO::getProjectLibraryId)); + + if(!Objects.isNull(qdqrMap)){ + for (Map.Entry> map : qdqrMap.entrySet()) { + String projectLibraryId = map.getKey(); + ProjectLibraryBase projectLibraryBaseEO = projectLibraryBaseList.stream().filter(projectLibraryBase -> { + boolean flag = false; + if(StringUtils.equals(projectLibraryId,projectLibraryBase.getId())){ + flag = true; + } + return flag; + }).collect(Collectors.toList()).get(0); + + List processInfoDetailEOList = new ArrayList<>(); + + List qdqrLawsInventoryList = map.getValue(); + if(CollectionUtils.isNotEmpty(qdqrLawsInventoryList)){ + qdqrLawsInventoryList.forEach(projectLawsInventoryEO-> { + boolean homologationEngineerFlag = ( + StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus()) + || StringUtils.equals(projectLawsInventoryEO.getHomologationEngineerSubmitStatus(),"1") + ); + boolean regulationOwnerFlag = ( + StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus()) + || StringUtils.equals(projectLawsInventoryEO.getRegulationOwnerSubmitStatus(),"1") + ); + + if(homologationEngineerFlag){ + ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); + processInfoDetailEO.setProjectLawsInventoryId(projectLawsInventoryEO.getId()); + processInfoDetailEO.setUserId(projectLawsInventoryEO.getHomologationEngineerId()); + processInfoDetailEO.setTaskDefinitionKey(InventoryAffirmNodeEnum.HOMOLOGATION_ENGINEER_AUDIT.getKey()); + processInfoDetailEO.setEndTime(projectLawsInventoryEO.getInventoryAffirmDueDate()); + processInfoDetailEO.setCreateTime(new Date()); + processInfoDetailEO.setCreateBy(projectLibraryBaseEO.getStudioEngineer()); + processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue()); + + processInfoDetailEOList.add(processInfoDetailEO); + } + if(regulationOwnerFlag){ + ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); + processInfoDetailEO.setProjectLawsInventoryId(projectLawsInventoryEO.getId()); + processInfoDetailEO.setUserId(projectLawsInventoryEO.getRegulationOwnerId()); + processInfoDetailEO.setTaskDefinitionKey(InventoryAffirmNodeEnum.REGULATION_OWNER_AUDIT.getKey()); + processInfoDetailEO.setEndTime(projectLawsInventoryEO.getInventoryAffirmDueDate()); + processInfoDetailEO.setCreateTime(new Date()); + processInfoDetailEO.setCreateBy(projectLibraryBaseEO.getStudioEngineer()); + processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue()); + + processInfoDetailEOList.add(processInfoDetailEO); + } + }); + + //往待办中心添加数据。 + ProcessInfoEO processInfoEO = new ProcessInfoEO(); + this.projectLawsInventoryEOService.addProcessInfo(processInfoEO,projectLibraryId,null); + this.projectLawsInventoryEOService.addProcessInfoDetail(processInfoEO.getId(),processInfoDetailEOList,null); + } + } + } + } + + /** + * 初始化任务确认 + * @param projectLawsInventoryEOList + */ + public void initRwqr(List projectLawsInventoryEOList){ + String flowType = FlowTypeEnum.RWQRLC.getValue(); + List> rwqrResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + if(CollectionUtils.isNotEmpty(rwqrResult)){ + for (Map rwqrMap : rwqrResult) { + List lawsInventoryList = projectLawsInventoryEOList.stream().filter(projectLawsInventory -> { + boolean flag = false; + if (StringUtils.equals((String) rwqrMap.get("projectLawsInventoryId"), projectLawsInventory.getId())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(lawsInventoryList)){ + ProjectLawsInventoryEO projectLawsInventoryEO = lawsInventoryList.get(0); + + rwqrMap.put("projectLibraryId",projectLawsInventoryEO.getProjectLibraryId()); + rwqrMap.put("projectLawsInventoryId",projectLawsInventoryEO.getId()); + rwqrMap.put("standId",projectLawsInventoryEO.getStandId()); + rwqrMap.put("flowType",flowType); + + List> taskMapList = (List>)rwqrMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是dre确认节点,将状态设置为询问,否则就是待确认。 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"dreqr")){ + status = TodoCenterStatusEnum.INQUIRY.getValue(); + }else { + status = TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue(); + } + break; + } + } + + rwqrMap.put("status",status); + this.addProcessInfo(rwqrMap); + } + } + } + } + } + + /** + * 初始化符合性流程 + * @param flowType + */ + public void initConformance(String flowType,List projectLawsInventoryEOList,List taskInventoryEOList,List taskInventoryDetailEOList){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List> conformanceResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + if(CollectionUtils.isNotEmpty(conformanceResult)){ + for (Map conformanceMap : conformanceResult) { + String actiProcInstId = (String) conformanceMap.get("actiProcInstId"); + List taskInventoryListTemp = taskInventoryEOList.stream().filter(taskInventoryEO -> { + boolean flag = false; + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getDesignPId(), actiProcInstId)) { + flag = true; + } + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getPrehomoPId(), actiProcInstId)) { + flag = true; + } + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + if (StringUtils.equals(taskInventoryEO.getVerifyPId(), actiProcInstId)) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(taskInventoryListTemp)){ + List> taskMapList = (List>)conformanceMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + for (Map taskMap : taskMapList) { + String taskId = (String) taskMap.get("taskId"); + String userId = ""; + for (ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO : taskInventoryDetailEOList) { + if(StringUtils.equals(taskId,projectTaskInventoryDetailEO.getTaskId())){ + userId = projectTaskInventoryDetailEO.getUserId(); + } + } + taskMap.put("userId",userId); + } + String endTimeStr = ""; + if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue()) && taskInventoryListTemp.get(0).getDesignDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getDesignDueDate()); + }else if(StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue()) && taskInventoryListTemp.get(0).getPrehomoDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getPrehomoDueDate()); + }else if(StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue()) && taskInventoryListTemp.get(0).getVerifyDueDate() != null){ + endTimeStr = sdf.format(taskInventoryListTemp.get(0).getVerifyDueDate()); + } + + String projectLawsInventoryId = taskInventoryListTemp.get(0).getProjectLawsInventoryId(); + String projectLibraryId = ""; + String bussDocumentLibraryId = ""; + List projectLawsInventoryListTemp = projectLawsInventoryEOList.stream().filter(lawsInventory -> { + boolean flag = false; + if (StringUtils.equals(lawsInventory.getId(), projectLawsInventoryId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryListTemp)){ + projectLibraryId = projectLawsInventoryListTemp.get(0).getProjectLibraryId(); + bussDocumentLibraryId = projectLawsInventoryListTemp.get(0).getStandId(); + } + conformanceMap.put("flowType",flowType); + conformanceMap.put("endTime",endTimeStr); + conformanceMap.put("projectLibraryId",projectLibraryId); + conformanceMap.put("projectLawsInventoryId",projectLawsInventoryId); + conformanceMap.put("bussDocumentLibraryId",bussDocumentLibraryId); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是发起人审查节点,状态应该为 待审核,否则就是待提交 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsh")){ + status = TodoCenterStatusEnum.TO_AUDIT.getValue(); + }else { + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + } + break; + } + } + conformanceMap.put("status",status); + + this.addProcessInfo(conformanceMap); + } + } + } + } + } + + /** + * 初始化法规技术评估 + */ + public void initFgjspg(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String flowType = FlowTypeEnum.FGJSPG.getValue(); + List> fgjspgResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + if(CollectionUtils.isNotEmpty(fgjspgResult)){ + List lawsTechnologyEvaluationEOList = this.lawsTechnologyEvaluationEOService.list(); + List flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list(); + + for (Map fgjspgMap : fgjspgResult) { + List> taskMapList = (List>)fgjspgMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + String standId = ""; + String endTimeStr = ""; + String actiProcInstId = (String) fgjspgMap.get("actiProcInstId"); + + List flowDetailEOListTemp = flowDetailEOList.stream().filter(flowDetailEO -> { + boolean flag = false; + if (StringUtils.equals(actiProcInstId, flowDetailEO.getActiProcInstId())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + + if(CollectionUtils.isNotEmpty(flowDetailEOListTemp)){ + String lawsTechnologyEvaluationId = flowDetailEOListTemp.get(0).getLawsTechnologyEvaluationId(); + List technologyEvaluationEOListTemp = lawsTechnologyEvaluationEOList.stream().filter(lawsTechnologyEvaluation -> { + boolean flag = false; + if (StringUtils.equals(lawsTechnologyEvaluationId, lawsTechnologyEvaluation.getId())) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(technologyEvaluationEOListTemp)){ + standId = technologyEvaluationEOListTemp.get(0).getStandId(); + endTimeStr = sdf.format(technologyEvaluationEOListTemp.get(0).getEndTime()); + } + } + + fgjspgMap.put("standId",standId); + fgjspgMap.put("endTime",endTimeStr); + fgjspgMap.put("flowType",flowType); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果是发起人审查节点,状态应该为 待审核,否则就是待提交 + if(StringUtils.equals((String)taskMap.get("taskDefinitionKey"),"fqrsc")){ + status = TodoCenterStatusEnum.TO_AUDIT.getValue(); + }else { + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + } + break; + } + } + fgjspgMap.put("status",status); + this.addProcessInfo(fgjspgMap); + } + } + } + } + + /** + * 初始化法规意见收集 + */ + public void initFgyjsj(){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String flowType = FlowTypeEnum.FGYJSJLC.getValue(); + List> fgyjsjResult = this.workFlowFeignClient.queryProcessInfoByPrcType(flowType); + + if(CollectionUtils.isNotEmpty(fgyjsjResult)){ + List lawsOpinionGatherEOList = this.lawsOpinionGatherEOService.list(); + for (Map fgyjsjMap : fgyjsjResult) { + List> taskMapList = (List>)fgyjsjMap.get("taskMapList"); + if(CollectionUtils.isNotEmpty(taskMapList)){ + String standId = ""; + String endTimeStr = ""; + String actiProcInstId = (String) fgyjsjMap.get("actiProcInstId"); + List lawsOpinionGatherTempList = lawsOpinionGatherEOList.stream().filter(lawsOpinionGatherEO -> { + boolean flag = false; + if (StringUtils.equals(lawsOpinionGatherEO.getActiProcInstId(), actiProcInstId)) { + flag = true; + } + return flag; + }).collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(lawsOpinionGatherTempList)){ + standId = lawsOpinionGatherTempList.get(0).getStandId(); + endTimeStr = sdf.format(lawsOpinionGatherTempList.get(0).getEndTime()); + } + fgyjsjMap.put("standId",standId); + fgyjsjMap.put("endTime",endTimeStr); + fgyjsjMap.put("flowType",flowType); + + String status = TodoCenterStatusEnum.COMPLETED.getValue(); + for (Map taskMap : taskMapList) { + String deleteReason = (String) taskMap.get("deleteReason"); + if(StringUtils.isEmpty(deleteReason)){ + //如果还有没提交的任务 + status = TodoCenterStatusEnum.TO_SUBMIT.getValue(); + break; + } + } + fgyjsjMap.put("status",status); + this.addProcessInfo(fgyjsjMap); + } + } + } + } + + public void addProcessInfo(Map params){ + String prcNum = (String) params.get("prcNum"); + String prcName = (String) params.get("prcName"); + String actiProcInstId = (String) params.get("actiProcInstId"); + String flowType = (String) params.get("flowType"); + String endTimeStr = ""; + String projectLibraryId = ""; + String projectLawsInventoryId = ""; + String standId = ""; + String status = (String) params.get("status"); + String createBy = (String) params.get("createBy"); + if(StringUtils.equals(flowType,FlowTypeEnum.RWQRLC.getValue())){ + projectLibraryId = (String) params.get("projectLibraryId"); + projectLawsInventoryId = (String) params.get("projectLawsInventoryId"); + standId = (String) params.get("standId"); + endTimeStr = (String) params.get("endTime"); + }else if(StringUtils.equals(flowType,FlowTypeEnum.FGYJSJLC.getValue()) || StringUtils.equals(flowType,FlowTypeEnum.FGJSPG.getValue())){ + standId = (String) params.get("standId"); + endTimeStr = (String) params.get("endTime"); + }else if(StringUtils.equals(flowType,FlowTypeEnum.SJFHXSHLC.getValue()) || StringUtils.equals(flowType,FlowTypeEnum.PREHOMOQRLC.getValue())|| StringUtils.equals(flowType,FlowTypeEnum.YZFHXSCLC.getValue())){ + projectLibraryId = (String) params.get("projectLibraryId"); + projectLawsInventoryId = (String) params.get("projectLawsInventoryId"); + standId = (String) params.get("bussDocumentLibraryId"); + endTimeStr = (String) params.get("endTime"); + } + + ProcessInfoEO processInfoEO = new ProcessInfoEO(); + processInfoEO.setId(actiProcInstId); + processInfoEO.setProjectLibraryId(projectLibraryId); + processInfoEO.setProjectLawsInventoryId(projectLawsInventoryId); + processInfoEO.setActiProcInstId(actiProcInstId); + processInfoEO.setFlowType(flowType); + processInfoEO.setPrcNum(prcNum); + processInfoEO.setPrcName(prcName); + processInfoEO.setBussDocumentLibraryId(standId); + + //截止日期 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date endTime = new Date(); + try { + endTime = sdf.parse(endTimeStr); + } catch (ParseException e) { + e.printStackTrace(); + } + processInfoEO.setEndTime(endTime); + processInfoEO.setStatus(status); + processInfoEO.setCreateBy(createBy); + this.baseMapper.insert(processInfoEO); + + List> taskMapList = (List>)params.get("taskMapList"); + List processInfoDetailEOList = new ArrayList<>(); + for (Map taskMap : taskMapList) { + ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); + processInfoDetailEO.setActiProcInstId((String) taskMap.get("actiProcInstId")); + processInfoDetailEO.setTaskId((String) taskMap.get("taskId")); + processInfoDetailEO.setTaskDefinitionKey((String) taskMap.get("taskDefinitionKey")); + processInfoDetailEO.setUserId((String) taskMap.get("userId")); + String taskStatus = (String) taskMap.get("status"); + if(StringUtils.equals(taskStatus,TaskStatusEnum.HAVE_DONE.getValue())){ + try { + processInfoDetailEO.setSubmitTime(sdf.parse((String) taskMap.get("submitTime"))); + } catch (ParseException e) { + e.printStackTrace(); + } + } + processInfoDetailEO.setStatus(taskStatus); + processInfoDetailEO.setProcessInfoId(processInfoEO.getId()); + processInfoDetailEO.setFlowType(flowType); + processInfoDetailEO.setProjectLawsInventoryId(projectLawsInventoryId); + processInfoDetailEO.setCreateTime(new Date()); + processInfoDetailEO.setCreateBy(createBy); + + processInfoDetailEOList.add(processInfoDetailEO); + } + + this.processInfoDetailEOService.saveBatch(processInfoDetailEOList); + } +} 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..75577e278 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ProcessInfoVO.java @@ -0,0 +1,105 @@ +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; + /**截止日期 过期标识:true为已经过期 false为没有过期**/ + private boolean endTimePastDueFlag = false; +} 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-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java index 51070cea7..77a9bbdb0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java @@ -181,4 +181,18 @@ public interface WorkFlowFeignClient { @RequestMapping(value = "/bat-wkflow/deleteProcessInstanceByPrcIds",method = RequestMethod.GET) Result deleteProcessInstanceByPrcIds(@RequestParam("prcIds") String prcIds); + + /** + * 根据流程类型,查询未完成的流程信息 + * @param prcType + * @return + */ + @RequestMapping(value = "/bat-wkflow/datas/bus-process-name/queryProcessInfoByPrcType",method = RequestMethod.GET) + List> queryProcessInfoByPrcType(@RequestParam("prcType") String prcType); + + /** + * 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息 + */ + @RequestMapping(value = "/bat-wkflow/datas/bus-process-new/dispostHistoryBusProcessNewData",method = RequestMethod.GET) + Result dispostHistoryBusProcessNewData(); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java index e8db6f85e..e0ab1dc66 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/impl/WorkFlowFeignClientImpl.java @@ -196,4 +196,20 @@ public class WorkFlowFeignClientImpl{ public Result deleteProcessInstanceByTaskId(@RequestParam("taskId")String taskId){ return workFlowFeignClient.deleteProcessInstance(taskId); } + + /** + * 根据流程类型,查询未完成的流程信息 + * @param prcType + * @return + */ + public List> queryProcessInfoByPrcType(String prcType) { + return workFlowFeignClient.queryProcessInfoByPrcType(prcType); + } + + /** + * 处理历史数据-之前的数据发起的时候在busProcessNew中没有待办信息 + */ + public Result dispostHistoryBusProcessNewData() { + return workFlowFeignClient.dispostHistoryBusProcessNewData(); + } } diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 2f4f0c4f1..15ce697bf 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -1337,4 +1337,17 @@ module.exports = { Topping:'Topping', cancelTopping:'Cancel Topping', relatedProjectVersion:'Related project version', + taskType:'Task Type', + taskStatus:'Task Status', + taskConfirmationHandling:'Task confirmation handling', + relatedVersion:'Related version', + filledBy:'Filled by', + parameterToBeInitiated:'Parameter to be initiated', + listTaskConfirmation:'List task confirmation', + completednum: 'Quantity to be filled', + filledBynum:'Filled by', + parameterToBeInitiatednum:'Parameter to be initiated', + listToConfirm:'List to confirm', + toSubmit:'To submit', + toAudit:'To audit', } \ No newline at end of file diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 6f1ffd509..1906fa813 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -516,8 +516,8 @@ module.exports = { AddProcess: '添加流程', RelatedItems: '相关项目', Sponsor: '发起人', - CurrentProcessor: '当前处理人', - LastProcessor: '上一处理人', + CurrentProcessor: '当前操作人', + LastProcessor: '上一操作人', ProcessingTime: '办理时间', cutoffTime: '截止时间', ProcessStatus: '流程状态', @@ -1438,4 +1438,17 @@ module.exports = { Topping:'置顶', cancelTopping:'取消置顶', relatedProjectVersion:'相关项目版本', + taskType:'任务类型', + taskStatus:'任务状态', + taskConfirmationHandling:'任务确认办理', + relatedVersion:'相关版本', + filledBy:'待分配填写人', + parameterToBeInitiated:'参数待发起', + listTaskConfirmation:'清单任务确认', + completednum: '待填写', + filledBynum:'待分配填写人', + parameterToBeInitiatednum:'参数待发起', + listToConfirm:'待确认', + toSubmit:'待提交', + toAudit:'待审核', } \ No newline at end of file diff --git a/jero-web/src/components/menu/index.js b/jero-web/src/components/menu/index.js index 6255cfdd4..f4cf57561 100644 --- a/jero-web/src/components/menu/index.js +++ b/jero-web/src/components/menu/index.js @@ -109,8 +109,10 @@ export default { props = { to: { path: menu.path } } } - const attrs = { href: menu.path, target: menu.meta.target , title:menu.meta.title } - + const attrs = { href: menu.path, target: menu.meta.target, title: menu.meta.title } + if (menu.meta && menu.meta.existTask) { + attrs.style = 'color:red' + } if (menu.children && menu.alwaysShow) { // 把有子菜单的 并且 父菜单是要隐藏子菜单的 // 都给子菜单增加一个 hidden 属性 @@ -162,7 +164,8 @@ export default { span slot = 'title' > { this.renderIcon(menu.meta.icon) } - < span title={menu.meta.title}> { menu.meta.title } < /span> + < span + title = { menu.meta.title } > { menu.meta.title } < /span> < /span> { itemArr 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..070169538 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('questionsSuggestions')}}
@@ -72,6 +72,7 @@ }]">
@@ -79,7 +80,7 @@
- * + * {{$t('reason')}}
@@ -112,6 +114,7 @@
+
@@ -166,7 +169,9 @@ } this.formInline = { ...this.formInline } }) - + if (this.$route.query.isDisabled) { + this.disabled = JSON.parse(this.$route.query.isDisabled) + } }, methods: { clickButtonToUpload(item, index) { @@ -301,4 +306,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')" /> { if (res instanceof String) { - this.queryBy = JSON.parse(res) + this.queryBy = JSON.parse(res) || {} callback() } else { - this.queryBy = res + this.queryBy = res || {} callback() } }) diff --git a/jero-web/src/views/processCenter/processForm/processDetails/index.vue b/jero-web/src/views/processCenter/processForm/processDetails/index.vue index 875ca81b0..f3ab23d05 100644 --- a/jero-web/src/views/processCenter/processForm/processDetails/index.vue +++ b/jero-web/src/views/processCenter/processForm/processDetails/index.vue @@ -15,6 +15,7 @@
+
@@ -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..2e445401c --- /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..7e7b36dc4 --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/dealtWith.vue @@ -0,0 +1,337 @@ + + + + + \ 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..559e9f016 --- /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..fb13eae0c --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/SentList.vue @@ -0,0 +1,231 @@ + + + + + \ 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..eba3c634c --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/dealtWith.vue @@ -0,0 +1,214 @@ + + + + + \ 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..efc218fae --- /dev/null +++ b/jero-web/src/views/toDoCenter/regulatoryAssessmentTasks/components/doneList.vue @@ -0,0 +1,231 @@ + + + + + \ 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..ec5e2708f --- /dev/null +++ b/jero-web/src/views/toDoCenter/taskConfirmation/components/batchProcessing.vue @@ -0,0 +1,266 @@ + + + + + \ 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..be713ee56 --- /dev/null +++ b/jero-web/src/views/toDoCenter/taskConfirmation/index.vue @@ -0,0 +1,354 @@ + + + + + \ No newline at end of file