diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java new file mode 100644 index 000000000..bf4544532 --- /dev/null +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java @@ -0,0 +1,41 @@ +package com.jero.common.constant.enums; + +public enum MessageType2Enum { + + + SUBSCRIPTION_NOTIFICATION("Subscription Notification","订阅通知"), + SHARE_FORWARD("Share Forward","转发推送"), + REGULATION_EARLY_WARNING("Regulation Early Warning","法规预警"), + REGULATION_LIST_CONFIRMATION("Regulation List Confirmation","法规清单确认"), + REGULATION_TASK_CONFIRMATION("Regulation Task Confirmation","法规任务确认"), + DESIGN_COMPLIANCE_CONFIRMATION("Design Compliance Confirmation","设计符合性确认"), + PRE_HOMO_CONFIRMATION("Pre-Homo Confirmation","Pre-Homo确认"), + VALIDATION_COMPLIANCE_CONFIRMATION("Validation Compliance Confirmation","验证符合性确认"), + REGULATION_OPINION_COLLECTION("Regulation Opinion Collection","法规意见收集"), + REGULATION_TECHNICAL_ASSESSMENT("Regulation Technical Assessment","法规技术评估"), + HOMO_PARAMETER_COLLECTION("Homo Parameter Collection","认证参数收集"); + + String en; + String cn; + + MessageType2Enum(String en, String cn) { + this.en = en; + this.cn = cn; + } + + public String getEn() { + return en; + } + + public void setEn(String en) { + this.en = en; + } + + public String getCn() { + return cn; + } + + public void setCn(String cn) { + this.cn = cn; + } +} diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java index 3181758a0..f9d101325 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java @@ -6,11 +6,11 @@ package com.jero.common.constant.enums; * @auth zhn */ public enum MessageTypeEnum { - READ("Subscription Notification","1"), - WARN("Early Warning","2"), - PUSH("Share / Forward","3"), - HOMO_TASK("Homo Parameter Task","4"), - TASK("Regulation Compliance Task", "5"), + READ("Subscription Notification","订阅通知","1"), + WARN("Regulation Early Warning","法规预警","2"), + PUSH("Share / Forward","转发推送","3"), + HOMO_TASK("Homo Parameter Task","","4"), + TASK("Regulation Compliance Task","", "5"), //REGULATION_LIST_CONFIRMATION_TASK("Regulation List Confirmation Task", "6"), // 清单确认任务 //REGULATION_LIST_CONFIRMATION_NOTIFICATION("Regulation List Confirmation Notification", "7"), // 清单确认通知 //REGULATION_TASK_CONFIRMATION_TASK("Regulation Task Confirmation", "8"), // 任务确认任务 @@ -21,19 +21,21 @@ public enum MessageTypeEnum { //DESIGN_COMPLIANCE_NOTIFICATION("Design Compliance Notification", "12"), // 设计符合性通知 //PRE_HOMO_NOTIFICATION("Pre-Homo Notification", "13"), // Pre-Homo通知 //VALIDATION_COMPLIANCE_NOTIFICATION("Validation Compliance Notification", "14"), // 验证符合性通知 - SYSTEMATIC_NOTIFICATION("Systematic Notification", "15"), // 系统通知 - LIST_CONFIRMATION("List Confirmation", "17"), // 清单确认 - TASK_CONFIRMATION("Task Confirmation", "18"), // 任务确认 - COMPLIANCE_CONFIRMATION("Compliance Confirmation", "19"), // 符合性确认 - COLLECTION_OF_LEGISLATIVE_COMMENTS("Collection of Legislative Comments", "20"), // 法规意见收集 - REGULATORY_AND_TECHNICAL_ASSESSMENT("Regulatory and technical assessment", "21"), // 法规技术评估 + SYSTEMATIC_NOTIFICATION("Systematic Notification","", "15"), // 系统通知 + LIST_CONFIRMATION("List Confirmation", "","17"), // 清单确认 + TASK_CONFIRMATION("Task Confirmation", "","18"), // 任务确认 + COMPLIANCE_CONFIRMATION("Compliance Confirmation","", "19"), // 符合性确认 + COLLECTION_OF_LEGISLATIVE_COMMENTS("Collection of Legislative Comments","", "20"), // 法规意见收集 + REGULATORY_AND_TECHNICAL_ASSESSMENT("Regulatory and technical assessment", "","21"), // 法规技术评估 ; String name; + String nameCn; String value; - private MessageTypeEnum(String name, String value) { + private MessageTypeEnum(String name,String nameCn, String value) { this.name = name; + this.nameCn = nameCn; this.value = value; } @@ -52,4 +54,12 @@ public enum MessageTypeEnum { public void setValue(String value) { this.value = value; } + + public String getNameCn() { + return nameCn; + } + + public void setNameCn(String nameCn) { + this.nameCn = nameCn; + } } diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java new file mode 100644 index 000000000..ba74f1908 --- /dev/null +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java @@ -0,0 +1,32 @@ +package com.jero.common.constant.enums; + +public enum MsgColorEnum { + + GREEN("其他","green"), + RED("任务被拒绝","red"), + YELLOW("任务预期","yellow"); + + String label; + String value; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + MsgColorEnum(String label, String value) { + this.label = label; + this.value = value; + } +} 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 8c03b7113..1a6edaa5b 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 @@ -17,11 +17,13 @@ import java.util.Map; public interface ParamsCollectManifestEOMapper extends BaseMapper { List listInfo(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); - List> listInfoForExport(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO, @Param("ids") String ids); + List listInfoOfTodoCenter(); // 查询控件类型为 标题的 参数项 List listInfoOfTitle(@Param("paramsManifestId") String paramsManifestId); IPage pageInfo(@Param("page") IPage page, @Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO); - } + + List queryByParamManifestId(@Param("paramsManifestId") String paramsManifestIdString); +} 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 822188743..80b2edd93 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 @@ -84,6 +84,10 @@ order by del_flag desc, add_flag desc, change_flag desc, nio_number asc + + - \ No newline at end of file + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml index 4ed99565e..bc90c0103 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml @@ -120,11 +120,34 @@ + + + + select * from laws_technology_evaluation_flow_detail where laws_technology_evaluation_id = #{lawsTechnologyEvaluationId} + + + + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java index cc0ed5c10..6dff7f905 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java @@ -11,11 +11,13 @@ import com.jero.common.system.vo.LoginUser; import com.jero.common.util.FileUtils; import com.jero.common.util.oss.CosBootUtil; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationComplianceResultEO; +import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationResultEO; import com.jero.modules.lawsTechnologyEvaluation.enums.ComplianceResultEnum; import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationComplianceResultEOMapper; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationComplianceResultEOService; +import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationResultEOService; import com.jero.modules.oss.entity.OSSFile; @@ -64,6 +66,8 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService; @Autowired private ISysUserService sysUserService; + @Autowired + private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService; /** * 保存 @@ -173,6 +177,15 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi Map params) { String ids = (String)params.get("ids"); String cut = (String)params.get("cut"); + String lawsTechnologyEvaluationId = (String)params.get("lawsTechnologyEvaluationId"); + if(StringUtils.isEmpty(lawsTechnologyEvaluationId)){ + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("法规技术评估id为空,请检查!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("The lawsTechnologyEvaluationId is empty, please check!"); + } + } + LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO = this.lawsTechnologyEvaluationEOService.queryById(lawsTechnologyEvaluationId); if(!StringUtils.isEmpty(ids)){ lawsTechnologyEvaluationComplianceResultEO.setIds(ids); @@ -187,12 +200,12 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi if(org.apache.commons.lang3.StringUtils.equals(cut, CutEnum.CN.getValue())){ title = "相关章节,问题说明,附件"; bottomTitle = "符合性结果:"; - fileName = "评估结果" + ".xls"; + fileName = lawsTechnologyEvaluationEO.getSerialNumber() + " 评估结果" + ".xls"; sheetName = "反馈结果"; }else if(org.apache.commons.lang3.StringUtils.equals(cut,CutEnum.EN.getValue())){ title = "Related section,Problem description,Accessory"; bottomTitle = "Compliance results:"; - fileName = "Evaluation results" + ".xls"; + fileName = lawsTechnologyEvaluationEO.getSerialNumber() + " Evaluation results" + ".xls"; sheetName = "Feedback result"; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java index cefc08e86..d9c254103 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java @@ -2,12 +2,11 @@ package com.jero.modules.lawsTechnologyEvaluation.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.constant.enums.CutEnum; -import com.jero.common.constant.enums.MessageTypeEnum; -import com.jero.common.constant.enums.ModuleEnum; +import com.jero.common.constant.enums.*; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; import com.jero.generater.modules.online.cgform.entity.OnlCgformField; @@ -15,10 +14,13 @@ import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServi import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; +import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.feishu.vo.FeishuMsg2Vo; import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO; import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationEOMapper; +import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationFlowDetailEOMapper; import com.jero.modules.lawsTechnologyEvaluation.service.*; import com.jero.modules.project.enums.JumpLinkEnum; import com.jero.modules.project.enums.MsgTypeEnum; @@ -33,9 +35,14 @@ import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.jero.modules.todoCenter.enums.TodoCenterStatusEnum; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; +import com.jero.modules.wkflow.enums.FlowTypeEnum; import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -47,7 +54,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; +import java.io.IOException; import java.io.OutputStream; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -97,6 +106,13 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper); if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){ - String prcIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(",")); + List actiProcInstIdList = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.toList()); + String prcIds = actiProcInstIdList.stream().collect(Collectors.joining(",")); Result result = this.workFlowFeignClient.deleteProcessInstanceByPrcIds(prcIds); if(result.getCode().equals(CommonConstant.SC_OK_200)){ removeByIds(ids); @@ -170,6 +187,8 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl userIdList = new ArrayList<>(); - String msgContentEN = ""; - String msgTitle = ""; + //String msgContentEN = ""; + //String msgTitle = ""; String initiator = ""; + String lawsTechnologyEvaluationId = jsonObject.getString("lawsTechnologyEvaluationId"); + LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO = queryById(lawsTechnologyEvaluationId); + LawsTechnologyEvaluationFlowDetailEO flowDetailEO = flowDetailEOMapper.queryByEvaluationId(lawsTechnologyEvaluationId); + String number = flowDetailEO.getPrcNum(); + String name = flowDetailEO.getPrcName(); + String endTime = new SimpleDateFormat("yyyy-MM-dd").format(lawsTechnologyEvaluationEO.getEndTime()); + + String title = MessageType2Enum.REGULATION_TECHNICAL_ASSESSMENT.getCn() + "/" + MessageType2Enum.REGULATION_TECHNICAL_ASSESSMENT.getEn(); + String cnContentUpper = ""; + String cnContentLower = ""; + String enContentUpper = ""; + String enContentLower = ""; if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_START_MSG.getValue())){ userIdList.add(jsonObject.getString("evaluationId")); - String endTime = jsonObject.getString("endTime"); //截止日期 + //String endTime = jsonObject.getString("endTime"); //截止日期 //您收到GB 7258 的法规技术评估流程任务,请及时查看处理。 - msgContentEN = "You recieved the Regulatory and technical assessment of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner."; - msgTitle = "You have a Regulatory and technical assessment task to complete"; + //msgContentEN = "You recieved the Regulatory and technical assessment of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner."; + //msgTitle = "You have a Regulatory and technical assessment task to complete"; String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id SysUser currentUser = sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId)); initiator = currentUser.getUsername(); + cnContentUpper = "您好,请及时查看处理此项任务,谢谢!"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator + + "\n截止时间: " + endTime; + enContentUpper = "Hello! Please check and address the task in a timely manner. Thank you!"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator + + "\nDue Date: " + endTime; }else if(StringUtils.equals(msgType,MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_ENALUATOR_SUBMIT_MSG.getValue())){ String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id SysUser currentUser = this.sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId)); userIdList.add(jsonObject.getString("initiatorUserId")); //XXX(人员账号)已提交GB 7258 的法规意见收集流程,请及时查看审核。 - msgContentEN = currentUser.getUsername() + " has submitted the collection process of Regulatory and technical assessment of "+serialNumber+", Please check and address it in time."; - msgTitle = "You have a Regulatory and technical assessment task to complete"; + //msgContentEN = currentUser.getUsername() + " has submitted the collection process of Regulatory and technical assessment of "+serialNumber+", Please check and address it in time."; + //msgTitle = "You have a Regulatory and technical assessment task to complete"; initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); + cnContentUpper = "您好,"+ currentUser.getUsername() +"已提交评估结果,请审核"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator + + "\n截止时间: " + endTime; + enContentUpper = "Hello! "+ currentUser.getUsername() +" has submitted the assessment result. Please review it"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator + + "\nDue Date: " + endTime; }else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_AUDIT_ACCEPTED_MSG.getValue())){ userIdList.add(jsonObject.getString("evaluationId")); //您提交的GB 7258 的法规技术评估流程已通过。 - msgContentEN = "The regulatory and technical assessment process for "+serialNumber+" you submitted has passed."; - msgTitle = "You have a Regulatory and technical assessment task completed"; + //msgContentEN = "The regulatory and technical assessment process for "+serialNumber+" you submitted has passed."; + //msgTitle = "You have a Regulatory and technical assessment task completed"; initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); + cnContentUpper = "您好,您提交的评估结果已通过"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator + + "\n截止时间: " + endTime; + enContentUpper = "Hello! The assessment result you submitted has passed"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator + + "\nDue Date: " + endTime; }else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_AUDIT_REJECTED_MSG.getValue())){ userIdList.add(jsonObject.getString("evaluationId")); //您提交的GB 7258 的法规技术评估流程已被退回,请及时查看处理。 - msgContentEN = "The regulatory and technical assessment process of "+serialNumber+" you submitted has been returned, Please check and address it in time."; - msgTitle = "You have a Regulatory and technical assessment task to complete"; + //msgContentEN = "The regulatory and technical assessment process of "+serialNumber+" you submitted has been returned, Please check and address it in time."; + //msgTitle = "You have a Regulatory and technical assessment task to complete"; initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); - }else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_MSG.getValue())){ + cnContentUpper = "您好,您提交的评估结果被退回,请及时查看处理"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator + + "\n截止时间: " + endTime; + enContentUpper = "Hello! The assessment result you submitted has been rejected. Please check and address it in a timely manner"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator + + "\nDue Date: " + endTime; + } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG.getValue())) { + initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); + cnContentUpper = "您好,该任务将于3天后到期,请及时查看处理,谢谢!"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator; + enContentUpper = "Hello! This task will expire in 3 days. Please check and address the task in a timely manner. Thank you!"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator; + userIdList = (List) jsonObject.get("userIdList"); + + } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_TODAY_MSG.getValue())) { + initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); + cnContentUpper = "您好,该任务将于今天到期,请尽快查看处理,谢谢!"; + cnContentLower = "编号:" + number + + "\n标题: " + name + + "\n发起人: " + initiator; + enContentUpper = "Hello! This task will expire today. Please check and address the task ASAP. Thank you!"; + enContentLower = "Regulation No :" + number + + "\nTitle: " + name + + "\nInitiator: " + initiator; + userIdList = (List) jsonObject.get("userIdList"); + + } /*else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_MSG.getValue())) { userIdList = (List) jsonObject.get("userIdList"); //您GB 7258的法规技术评估流程将于明天结束,请及时查看处理 - msgContentEN = "The the Regulatory and technical assessment of "+serialNumber+" will expire tomorrow. Please check and address it in time."; - msgTitle = "You have a Regulatory and technical assessment task to complete"; + //msgContentEN = "The the Regulatory and technical assessment of "+serialNumber+" will expire tomorrow. Please check and address it in time."; + //msgTitle = "You have a Regulatory and technical assessment task to complete"; initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(); - } + } */ + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(userIdList); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } //飞书跳转链接 String hrefFeishu = backUrl + JumpLinkEnum.TASK_AFFIRM_LINK.getLink(); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(title); + feishuMsgVo.setCnContentUpper(cnContentUpper); + feishuMsgVo.setCnContentLower(cnContentLower); + feishuMsgVo.setEnContentUpper(enContentUpper); + feishuMsgVo.setEnContentLower(enContentLower); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } //系统内部跳转链接 - String href = "" + " View details" + ""; - String contentInfo = msgContentEN + " " + href; + //String href = "" + " View details" + ""; + //String contentInfo = msgContentEN + " " + href; - Map sendMessageMap = new HashMap<>(); - sendMessageMap.put("hrefFeishu",hrefFeishu); - sendMessageMap.put("contentInfo",contentInfo); + //Map sendMessageMap = new HashMap<>(); + //sendMessageMap.put("hrefFeishu",hrefFeishu); + //sendMessageMap.put("contentInfo",contentInfo); - SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsTechnologyEvaluationId,sendMessageMap,null, MessageTypeEnum.REGULATORY_AND_TECHNICAL_ASSESSMENT,initiator); + //SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsTechnologyEvaluationId,sendMessageMap,null, MessageTypeEnum.REGULATORY_AND_TECHNICAL_ASSESSMENT,initiator); } @Override @@ -690,13 +803,20 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper); if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){ - String actiProcInstIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(",")); + List actiProcInstIdList = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.toList()); + String actiProcInstIds = actiProcInstIdList.stream().collect(Collectors.joining(",")); Result result = this.workFlowFeignClient.completeLawsTechnologyEvaluationTaskByPids(actiProcInstIds); if(result.getCode().equals(CommonConstant.SC_OK_200)){ lawsTechnologyEvaluationEOList.forEach(lawsTechnologyEvaluationEO -> { lawsTechnologyEvaluationEO.setFlowStatus(GatherResultEnum.COMPLETED.getValue()); }); this.updateBatchById(lawsTechnologyEvaluationEOList); + + LambdaUpdateWrapper processInfoUpdateWrap = new LambdaUpdateWrapper<>(); + processInfoUpdateWrap.set(ProcessInfoEO::getStatus, TodoCenterStatusEnum.COMPLETED.getValue()); + processInfoUpdateWrap.in(ProcessInfoEO::getId,actiProcInstIdList); + processInfoUpdateWrap.eq(ProcessInfoEO::getFlowType, FlowTypeEnum.FGJSPG.getValue()); + this.processInfoEOService.update(processInfoUpdateWrap); } } } @@ -712,17 +832,19 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl flowDetailQueryWrap = new QueryWrapper<>(); flowDetailQueryWrap.lambda().eq(LawsTechnologyEvaluationFlowDetailEO::getEvaluatorId,currentUser.getId()); List flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailQueryWrap); - if(CollectionUtils.isNotEmpty(flowDetailEOList)){ - List lawsTechnologyEvaluationIdList = flowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId).distinct().collect(Collectors.toList()); - queryWrapper.and(query -> { - query.eq("create_by",currentUser.getUsername()); + + queryWrapper.and(query -> { + query.eq("create_by",currentUser.getUsername()); + if(CollectionUtils.isNotEmpty(flowDetailEOList)){ + List lawsTechnologyEvaluationIdList = flowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId).distinct().collect(Collectors.toList()); query.or(q -> { for (String lawsTechnologyEvaluationId : lawsTechnologyEvaluationIdList) { q.or().like("id",lawsTechnologyEvaluationId); } }); - }); - } + } + }); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java index 9ab7619ea..79bbdb54d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java @@ -18,6 +18,7 @@ import com.jero.modules.document.enums.SearchEnum; import com.jero.modules.document.utils.ReadPdfUtil; import com.jero.modules.document.utils.ReadWordUtil; import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.feishu.vo.FeishuMsgVo; import com.jero.modules.message.websocket.WebSocket; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; @@ -886,7 +887,20 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl expediting(JSONObject json); List getRoleByUserId(String projectLibraryId,String cut); + + void addProcessInfo(ProcessInfoEO processInfoEO, String projectLibraryId, Date endTime); + + void addProcessInfoDetail(String processInfoId, List processInfoDetailEOList, Date endTime); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index f24dc17dc..bbff2d4c0 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -58,6 +58,11 @@ import com.jero.modules.system.service.ISysAnnouncementService; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +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.service.IProcessInfoDetailEOService; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; import com.jero.modules.wkflow.entity.ProcessHistoryEO; import com.jero.modules.wkflow.enums.DesignComplianceNodeEnum; import com.jero.modules.wkflow.enums.FlowTypeEnum; @@ -104,6 +109,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; import java.util.*; @@ -218,6 +224,11 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); if(StringUtils.isNotEmpty(ids)){ @@ -1391,9 +1419,9 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl projectLawsInventoryEOS = this.baseMapper.selectList(queryWrapper); List userIdList = new ArrayList<>(); + List processInfoDetailEOList = new ArrayList<>(); for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOS) { - - //如果该数据的状态为 未发起或拒绝 可以发起清单确认 + //未发起或拒绝 可以发起清单确认 boolean checkStatus = (StringUtils.equals(projectLawsInventoryEO.getInventoryAffirmStatus(),InventoryAffirmStatusEnum.NOT_STARTED.getValue()) ||StringUtils.equals(projectLawsInventoryEO.getInventoryAffirmStatus(),InventoryAffirmStatusEnum.REJECTED.getValue())); //如果该数据的法规工程师、认证工程师都不为空 @@ -1418,13 +1446,48 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl processInfoQueryWrap = new QueryWrapper<>(); + processInfoQueryWrap.lambda().eq(ProcessInfoEO::getProjectLibraryId,projectLibraryId); + processInfoQueryWrap.lambda().eq(ProcessInfoEO::getFlowType,FlowTypeEnum.QDQR.getValue()); + List processInfoEOList = this.processInfoEOService.list(processInfoQueryWrap); + if(CollectionUtils.isNotEmpty(processInfoEOList)){ + id = processInfoEOList.get(0).getId(); + //删除之前创建的数据 + this.processInfoEOService.remove(processInfoQueryWrap); + }else { + id = UUID.randomUUID().toString().replace("-", ""); + } + + processInfoEO.setId(id); + processInfoEO.setProjectLibraryId(projectLibraryId); + + processInfoEO.setEndTime(endTime); + processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue()); + processInfoEO.setFlowType(FlowTypeEnum.QDQR.getValue()); + + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + processInfoEO.setCreateBy(currentUser.getId()); + this.processInfoEOService.add(processInfoEO); + } + + /** + * 添加流程信息,用户的待办、已办信息。 + * @param processInfoId + * @param processInfoDetailEOList + * @param endTime + */ + @Override + public void addProcessInfoDetail(String processInfoId, List processInfoDetailEOList, Date endTime){ + processInfoDetailEOList.forEach(detail -> { + detail.setProcessInfoId(processInfoId); + detail.setFlowType(FlowTypeEnum.QDQR.getValue()); + + QueryWrapper deleteDetailWrap = new QueryWrapper<>(); + deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getProjectLawsInventoryId,detail.getProjectLawsInventoryId()); + deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getUserId,detail.getUserId()); + this.processInfoDetailEOService.remove(deleteDetailWrap); + }); + + //删除studio在这个项目的清单确认已办任务。 + /*QueryWrapper deleteStudioDetailWrap = new QueryWrapper<>(); + deleteStudioDetailWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,InventoryAffirmNodeEnum.INITIATED_BY_STUDIO_ENGINEERS.getKey()); + deleteStudioDetailWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoId); + this.processInfoDetailEOService.remove(deleteStudioDetailWrap);*/ + + this.processInfoDetailEOService.saveBatch(processInfoDetailEOList); + } + + /** + * 更新流程信息,用户的待办、已办任务信息 + * @param projeceLawsInventoryId + */ + public void updateProcessInfoDetail(String projeceLawsInventoryId){ + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + QueryWrapper detailQueryWrapper = new QueryWrapper<>(); + detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProjectLawsInventoryId,projeceLawsInventoryId); + detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getUserId,currentUser.getId()); + detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.QDQR.getValue()); + List detailEOList = this.processInfoDetailEOService.list(detailQueryWrapper); + + if(CollectionUtils.isNotEmpty(detailEOList)){ + String processInfoId = detailEOList.get(0).getProcessInfoId(); + + detailEOList.forEach(detail -> { + detail.setSubmitTime(new Date()); + detail.setStatus(TaskStatusEnum.HAVE_DONE.getValue()); + }); + this.processInfoDetailEOService.updateBatchById(detailEOList); + + //查询当前项目下还有没有未完成的任务 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoId); + queryWrapper.lambda().eq(ProcessInfoDetailEO::getStatus,TaskStatusEnum.NOT_DONE.getValue()); + int count = this.processInfoDetailEOService.count(queryWrapper); + //如果没有待办任务 + if(count == 0){ + ProcessInfoEO processInfoEO = new ProcessInfoEO(); + processInfoEO.setStatus(TodoCenterStatusEnum.COMPLETED.getValue()); + processInfoEO.setId(processInfoId); + this.processInfoEOService.updateById(processInfoEO); + } + } + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java index 9201fba57..144f559e2 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java @@ -3,6 +3,7 @@ package com.jero.modules.project.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.api.vo.Result; import com.jero.common.constant.enums.CutEnum; @@ -14,6 +15,7 @@ import com.jero.modules.project.entity.*; import com.jero.modules.project.enums.JumpLinkEnum; import com.jero.modules.project.enums.MsgTypeEnum; import com.jero.modules.project.enums.SendMsgFlagEnum; +import com.jero.modules.project.enums.TaskStatusEnum; import com.jero.modules.project.mapper.*; import com.jero.modules.project.service.IFeedbackHistoryService; import com.jero.modules.project.service.IProjectTaskInventoryDetailEOService; @@ -21,6 +23,8 @@ import com.jero.modules.project.service.IProjectTaskInventoryFeedbackEOService; import com.jero.modules.project.util.SendMessageUtils; 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.service.IProcessInfoDetailEOService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; @@ -61,6 +65,9 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl createByList = new ArrayList<>(); List projectTaskInventoryFeedbackEOList = new ArrayList<>(); + List processInfoDetailEOList = new ArrayList<>(); String serialNumber = projectTaskInventoryFeedbackEOService.createSerialNumber(); for (ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO : projectTaskInventoryDetailEOAddList) { @@ -138,6 +147,17 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl sendUserIdList = projectTaskInventoryDetailEOAddList.stream().filter(e -> { boolean flag = true; @@ -195,6 +218,17 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl processInfoDetailUpdateWrap= new LambdaUpdateWrapper(); + processInfoDetailUpdateWrap.eq(ProcessInfoDetailEO::getTaskId,taskInventoryDetailById.getTaskId()); + processInfoDetailUpdateWrap.set(ProcessInfoDetailEO::getStatus,projectTaskInventoryDetailEO.getStatus()); + this.processInfoDetailEOService.update(processInfoDetailUpdateWrap); + } + } } /** @@ -205,8 +239,9 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + ProjectTaskInventoryDetailEO projectTaskInventoryDetailEO = this.baseMapper.selectById(id); + removeById(id); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(ProjectTaskInventoryFeedbackEO::getProjectTaskInventoryId,id); List list = this.projectTaskInventoryFeedbackEOService.list(queryWrapper); if(CollectionUtils.isNotEmpty(list)){ @@ -216,6 +251,12 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl processInfoDetailRemoveWrap = new QueryWrapper<>(); + processInfoDetailRemoveWrap.lambda().eq(ProcessInfoDetailEO::getTaskId,projectTaskInventoryDetailEO.getTaskId()); + this.processInfoDetailEOService.remove(processInfoDetailRemoveWrap); + } } /** diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java index 11892a582..3d91a9ccb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/entity/LawsMonthlyReportWriteEO.java @@ -122,7 +122,7 @@ public class LawsMonthlyReportWriteEO implements Serializable { /**状态*/ @Excel(name = "状态", width = 15) @ApiModelProperty(value = "状态") - @Dict(dicCode = "state") + @Dict(dicCode = "fa3_gui1_yue4_bao4_tian2_xie3_-_-_zhuang4_tai4") private java.lang.String state; /**用法*/ diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/enums/DictCodeReportEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/enums/DictCodeReportEnum.java index 5e6d09401..edb196464 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/enums/DictCodeReportEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/enums/DictCodeReportEnum.java @@ -10,6 +10,7 @@ public enum DictCodeReportEnum { APPLYCAR("适用车型","car_type"), APPLYSCOPE("适用范围","fa3_gui1_yue4_bao4_-_shi4_yong4_fan4_wei2"), STATE("状态","state"), + STATE_REPORT("状态","fa3_gui1_yue4_bao4_tian2_xie3_-_-_zhuang4_tai4"), USEMETHOD("用法","yong4_fa3"); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java index cb571424d..877e7d373 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java @@ -296,14 +296,14 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl queryWrapper = QueryGenerator.initQueryWrapper(lawsMonthlyReportWriteEOTemp, req.getParameterMap()); queryWrapper.orderByDesc("memories_chapter_one","memories_chapter","create_time"); + //新需求月报填写不设置去权限, 所有的人都可以查看-------------------------------------------------------------------------------------- //管理员查看全部数据,其余人只能查看自己的数据 - LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - List rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername()); - if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ - queryWrapper.in("create_by",currentUser.getUsername()); - } -// Page page = new Page(pageNo, pageSize); -// Page pageInfo = this.page(page, queryWrapper); +// LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// List rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername()); +// if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ +// queryWrapper.in("create_by",currentUser.getUsername()); +// } + //------------------------------------------------------------------------------------- //所有的月报 @@ -439,119 +439,6 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl getPageInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEOTemp, -// Integer pageNo, -// Integer pageSize, -// HttpServletRequest req) { -// QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsMonthlyReportWriteEOTemp, req.getParameterMap()); -// queryWrapper.orderByDesc("memories_chapter_one","memories_chapter","create_time"); -// //管理员查看全部数据,其余人只能查看自己的数据 -// LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); -// List rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername()); -// if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ -// queryWrapper.in("create_by",currentUser.getUsername()); -// } -// Page page = new Page(pageNo, pageSize); -// Page pageInfo = this.page(page, queryWrapper); -// //法规月报id -// List lawsMonthlyReportIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getId).collect(Collectors.toList()); -// List userIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getLawsContact).collect(Collectors.toList()); -// List userIds = new ArrayList<>(); -// for (String s : userIdList) { -// if(StringUtils.isNotBlank(s)){ -// if(s.contains(",")){ -// userIds.addAll(Arrays.asList(s.split(","))); -// }else{ -// userIds.add(s); -// } -// } -// } -// List jsonObjects = sysBaseApi.queryUsersByIds(StringUtils.join(userIds, ",")); -// List userList = new ArrayList<>(); -// for (JSONObject jsonObject : jsonObjects) { -// LoginUser loginUser = JSONObject.parseObject(jsonObject.toJSONString(), LoginUser.class); -// userList.add(loginUser); -// } -// -// //获取章节目录 -// List lawsMonthlyReportTitleTemplateEOList = lawsMonthlyReportTitleTemplateEOService.list(); -// -// //新征求意见清单模板 -// List newOpinionTemplateEOList = new ArrayList<>(); -// if(lawsMonthlyReportIdList.size() != 0){ -// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); -// wrapper.in(NewOpinionTemplateEO::getLawsMonthlyReportWriteId,lawsMonthlyReportIdList); -// newOpinionTemplateEOList = iNewOpinionTemplateEOService.list(wrapper); -// } -// -// -// //新发布标准清单模板 -// List newStandardTemplateEOList = new ArrayList<>(); -// if(lawsMonthlyReportIdList.size() != 0){ -// LambdaQueryWrapper qrapperTemp = new LambdaQueryWrapper<>(); -// qrapperTemp.in(NewStandardTemplateEO::getLawsMonthlyReportWriteId,lawsMonthlyReportIdList); -// newStandardTemplateEOList = iNewStandardTemplateEOService.list(qrapperTemp); -// } -// -// -// for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : pageInfo.getRecords()) { -// //处理法规联系人 -// lawsContact(userList, lawsMonthlyReportWriteEO,lawsMonthlyReportWriteEOTemp.getCut()); -// //处理章节目录 -// if(StringUtils.isNotBlank(lawsMonthlyReportWriteEO.getMemoriesChapter())){ -// List lawsMonthlyReportTitleTemplateEOS = lawsMonthlyReportTitleTemplateEOList.stream() -// .filter(e -> lawsMonthlyReportWriteEO.getMemoriesChapter().equals(e.getId())).collect(Collectors.toList()); -// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){ -// lawsMonthlyReportWriteEO.setMemoriesChapterName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleCn()); -// }else if(CutEnum.EN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){ -// lawsMonthlyReportWriteEO.setMemoriesChapterName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleEn()); -// } -// } -// //处理章节目录对应的一级目录 -// if(StringUtils.isNotBlank(lawsMonthlyReportWriteEO.getMemoriesChapterOne())){ -// List lawsMonthlyReportTitleTemplateEOS = lawsMonthlyReportTitleTemplateEOList.stream() -// .filter(e -> lawsMonthlyReportWriteEO.getMemoriesChapterOne().equals(e.getId())).collect(Collectors.toList()); -// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){ -// lawsMonthlyReportWriteEO.setMemoriesChapterOneName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleCn()); -// }else if(CutEnum.EN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){ -// lawsMonthlyReportWriteEO.setMemoriesChapterOneName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleEn()); -// } -// } -// -// if(ContentTemplateEnum.NEW_REQUEST_LIST_TEMPLATE.getValue().equals(lawsMonthlyReportWriteEO.getContentTemplate())){ -// //新征求意见清单模板 -// List collect = newOpinionTemplateEOList.stream() -// .filter(e -> lawsMonthlyReportWriteEO.getId().equals(e.getLawsMonthlyReportWriteId())).collect(Collectors.toList()); -// lawsMonthlyReportWriteEO.setNewOpinionTemplateEOList(collect); -// -// }else if(ContentTemplateEnum.NEW_RELEASE_STANDARD_MANIFEST_TEMPLATE.getValue().equals(lawsMonthlyReportWriteEO.getContentTemplate())){ -// //新发布标准清单模板 -// List collect = newStandardTemplateEOList.stream() -// .filter(e -> lawsMonthlyReportWriteEO.getId().equals(e.getLawsMonthlyReportWriteId())).collect(Collectors.toList()); -// lawsMonthlyReportWriteEO.setNewStandardTemplateEOList(collect); -// } -// -// //处理导出状态 -// String exportState = lawsMonthlyReportWriteEO.getExportState(); -// if(StringUtils.isNotBlank(exportState)){ -// if(ExportStateEnum.NOT_EXPORT.getValue().equals(exportState)){ -// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut())){ -// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.NOT_EXPORT.getName()); -// }else{ -// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.NOT_EXPORT.getNameEn()); -// } -// }else if(ExportStateEnum.HAS_BEEN_EXPORT.getValue().equals(exportState)){ -// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut())){ -// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.HAS_BEEN_EXPORT.getName()); -// }else{ -// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.HAS_BEEN_EXPORT.getNameEn()); -// } -// } -// } -// } -// return pageInfo; -// } private void lawsContact(List userList, LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,String cut) { String lawsContact = lawsMonthlyReportWriteEO.getLawsContact(); @@ -588,12 +475,14 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername()); - if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ - wrapper.in(LawsMonthlyReportWriteEO::getCreateBy,currentUser.getUsername()); - } +// LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// List rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername()); +// if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ +// wrapper.in(LawsMonthlyReportWriteEO::getCreateBy,currentUser.getUsername()); +// } + //---------------------------------------------------------------------------------------- List lawsMonthlyReportWriteEOS = this.list(wrapper); if(lawsMonthlyReportWriteEOS.size() == 0){ @@ -722,10 +611,11 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS, @@ -874,7 +764,15 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS, List lawsMonthlyReportTitleTemplateEOS, List reportTitleOneList, @@ -891,9 +789,9 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl reportTitleTwoList = lawsMonthlyReportTitleTemplateEOS.stream().filter(e -> e.getParentId().equals(lawsMonthlyReportTitleTemplateEO.getId())).collect(Collectors.toList()); - + //二级目录按sort正序排序 + Collections.sort(reportTitleTwoList);//正序排序 for (LawsMonthlyReportTitleTemplateEO monthlyReportTitleTemplateEO : reportTitleTwoList) { int reportCount = 1; @@ -933,7 +832,7 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl reportTitleTwoList = lawsMonthlyReportTitleTemplateEOS.stream().filter(e -> e.getParentId().equals(lawsMonthlyReportTitleTemplateEO.getId())).collect(Collectors.toList()); - + Collections.sort(reportTitleTwoList);//正序排序 for (LawsMonthlyReportTitleTemplateEO monthlyReportTitleTemplateEO : reportTitleTwoList) { int reportCount = 1; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java index dc18a8ca8..2b9986eca 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java @@ -208,7 +208,7 @@ public class WordUtil { //主要内容生成页眉页脚(office版本) @SneakyThrows - public static void exportHeardAndFoot(XWPFDocument document,String month){ + public static void exportHeardAndFoot(XWPFDocument document,String month,String cut){ XWPFHeaderFooterPolicy headerFooterPolicy = document.getHeaderFooterPolicy(); if (headerFooterPolicy == null) headerFooterPolicy = document.createHeaderFooterPolicy(); XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT); @@ -232,7 +232,14 @@ public class WordUtil { picture.getCTPicture().getBlipFill().getBlip().setEmbed(blipID); run.addTab(); is.close(); - run.setText(" "+month); + if(CutEnum.CN.getValue().equals(cut)){ + run.setText(" "+month+" (总第 期)"); + }else{ + String replace = month.replace("年", " ").replace("月", ""); + String monthTemp = replace.split(" ")[1]+"/"+replace.split(" ")[0]; + run.setText(" "+monthTemp+" (Issue No. )"); + } + run.setFontSize(11); run.setFontFamily("Blue Sky Noto Regular"); } @@ -399,7 +406,7 @@ public class WordUtil { paragraph.setAlignment(ParagraphAlignment.CENTER); XWPFRun run = paragraph.createRun(); run.setText("NIO Internal"); - run.setFontSize(18); + run.setFontSize(12); run.setFontFamily("Blue Sky Standard Regular"); // run.setFontFamily("Blue Sky Noto Regular"); run.setBold(true); @@ -413,8 +420,8 @@ public class WordUtil { pgSz.setH(BigInteger.valueOf(16838)); CTPageMar pageMar = sectPr.getPgMar(); if (pageMar == null) pageMar = sectPr.addNewPgMar(); - pageMar.setLeft(BigInteger.valueOf(1797)); //左边距 - pageMar.setRight(BigInteger.valueOf(1797));//右边距 + pageMar.setLeft(BigInteger.valueOf(1083)); //左边距 + pageMar.setRight(BigInteger.valueOf(1083));//右边距 pageMar.setTop(BigInteger.valueOf(1440)); //页眉高度 pageMar.setBottom(BigInteger.valueOf(1440));//页脚高度 @@ -594,7 +601,7 @@ public class WordUtil { //适用车型中文名 String applyCarName = dictItem(sysDictItems, applyCar,cut, DictCodeReportEnum.APPLYCAR.getValue()); String applyScopeName = dictItem(sysDictItems, applyScope,cut, DictCodeReportEnum.APPLYSCOPE.getValue()); - String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue()); + String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE_REPORT.getValue()); String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue()); XWPFTable table = document.createTable(10, 2); @@ -629,9 +636,9 @@ public class WordUtil { //第6行 // setCell(table,4, "实施车型",implementCar); //第7行 - setCell(table,4, "新车型实施日期",newCarImplementTime); + setCell(table,4, "发布日期",newCarImplementTime); //第8行 - setCell(table,5, "在产车实施日期",productionCarImplementTime); + setCell(table,5, "实施日期",productionCarImplementTime); //第9行 setCell(table,6, "主要内容",contentCn); //第10行 @@ -654,9 +661,9 @@ public class WordUtil { //第6行 // setCell(table,4,"Implementation Model",implementCar); //第7行 - setCell(table,4,"New Type Execution Date",newCarImplementTime); + setCell(table,4,"Release Date",newCarImplementTime); //第8行 - setCell(table,5,"New Vehicle Execution Date",productionCarImplementTime); + setCell(table,5,"Execution Date",productionCarImplementTime); //第9行 setCell(table,6,"Main Content",contentEn); //第10行 @@ -1264,28 +1271,28 @@ public class WordUtil { String blank = ""; switch (value) { case "M": - blank = " "; + blank = " "; break; case "N": blank = "\r\n"; break; case "企业": - blank = " "; + blank = " "; break; case "整车": - blank = " "; + blank = " "; break; case "系统/零部件": blank = "\r\n"; break; case "新车型": - blank = " "; + blank = " "; break; case "在产车型`": blank = ""; break; case "Enterprise": - blank = " "; + blank = " "; break; case "Vehicle": blank = " "; @@ -1294,43 +1301,43 @@ public class WordUtil { blank = "\r\n"; break; case "New Car Model": - blank = " "; + blank = " "; break; case "Models In Production": blank = ""; break; case "草稿": - blank = " "; + blank = " "; break; case "公示稿": - blank = " "; + blank = " "; break; case "发布稿": blank = ""; break; case "Draft": - blank = " "; + blank = " "; break; case "Public Notice": - blank = " "; + blank = " "; break; case "Release": blank = ""; break; case "强制": - blank = " "; + blank = " "; break; case "推荐": - blank = " "; + blank = " "; break; case "安装需符合": blank = ""; break; case "Mandatory": - blank = " "; + blank = " "; break; case "Voluntary": - blank = " "; + blank = "\r\n"; break; case "Mandatory if fitted": blank = ""; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index b7a5cb5fa..761fb4294 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -2653,7 +2653,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl todoTaskList(@RequestParam Map params) { + IPage page = this.processInfoEOService.lawsAssessTodoTaskList(params); + return Result.OK(page); + } + + @AutoLog(value = "分页查询-已办任务列表") + @ApiOperation(value="分页查询-已办任务列表", notes="分页查询-已办任务列表") + @GetMapping(value = "/doneProcess") + public Result doneProcess(@RequestParam Map params) { + IPage page = this.processInfoEOService.lawsAssessDoneProcess(params); + return Result.OK(page); + } + + @AutoLog(value = "分页查询-已发任务列表") + @ApiOperation(value="分页查询-已发任务列表", notes="分页查询-已发任务列表") + @GetMapping(value = "/issuedProcess") + public Result issuedProcess(@RequestParam Map params) { + IPage page = this.processInfoEOService.lawsAssessIssuedProcess(params); + return Result.OK(page); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ParamsManifestTodoCenterController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ParamsManifestTodoCenterController.java new file mode 100644 index 000000000..d26874640 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ParamsManifestTodoCenterController.java @@ -0,0 +1,39 @@ +package com.jero.modules.todoCenter.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.modules.todoCenter.service.IParamsManifestTodoCenterService; +import com.jero.modules.todoCenter.vo.ParamsManifestTodoCenterEOPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: liyawei + * @Description: + * @Date: Created in 09:43 2022/10/11 + */ + +@Api(tags="待办中心-参数清单") +@RestController +@RequestMapping("/todoCenter/params/manifest") +@Slf4j +public class ParamsManifestTodoCenterController { + + @Autowired + private IParamsManifestTodoCenterService paramsManifestTodoCenterService; + + @AutoLog(value = "分页查询") + @ApiOperation(value="分页查询", notes="分页查询") + @GetMapping(value = "/page") +// @RequiresPermissions("params:collectManifest:list") + public Result page(ParamsManifestTodoCenterEOPage pageVO) { + IPage page = paramsManifestTodoCenterService.queryPage(pageVO); + return Result.OK(page); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoDetailEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoDetailEOController.java new file mode 100644 index 000000000..27ced7438 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoDetailEOController.java @@ -0,0 +1,184 @@ +package com.jero.modules.todoCenter.controller; + +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; +import com.jero.modules.todoCenter.service.IProcessInfoDetailEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import com.jero.common.system.base.controller.JeroController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.jero.common.aspect.annotation.AutoLog; + + + /** + * @Description: 流程信息明细表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Api(tags="流程信息明细表") +@RestController +@RequestMapping("/todoCenter/processInfoDetailEO") +@Slf4j +public class ProcessInfoDetailEOController extends JeroController { + @Autowired + private IProcessInfoDetailEOService processInfoDetailEOService; + + /** + * 分页列表查询 + * + * @param processInfoDetailEO + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "流程信息明细表-分页列表查询") + @ApiOperation(value="流程信息明细表-分页列表查询", notes="流程信息明细表-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(ProcessInfoDetailEO processInfoDetailEO, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processInfoDetailEO, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = processInfoDetailEOService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @return + */ + @AutoLog(value = "流程信息明细表-列表查询") + @ApiOperation(value="流程信息明细表-列表查询", notes="流程信息明细表-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = processInfoDetailEOService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + * + * @param processInfoDetailEO + * @return + */ + @AutoLog(value = "流程信息明细表-添加") + @ApiOperation(value="流程信息明细表-添加", notes="流程信息明细表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProcessInfoDetailEO processInfoDetailEO) { + processInfoDetailEOService.add(processInfoDetailEO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param processInfoDetailEO + * @return + */ + @AutoLog(value = "流程信息明细表-编辑") + @ApiOperation(value="流程信息明细表-编辑", notes="流程信息明细表-编辑") + @PutMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProcessInfoDetailEO processInfoDetailEO) { + processInfoDetailEOService.editById(processInfoDetailEO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "流程信息明细表-通过id删除") + @ApiOperation(value="流程信息明细表-通过id删除", notes="流程信息明细表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + processInfoDetailEOService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "流程信息明细表-批量删除") + @ApiOperation(value="流程信息明细表-批量删除", notes="流程信息明细表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.processInfoDetailEOService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "流程信息明细表-通过id查询") + @ApiOperation(value="流程信息明细表-通过id查询", notes="流程信息明细表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + ProcessInfoDetailEO processInfoDetailEO = processInfoDetailEOService.queryById(id); + if(processInfoDetailEO==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(processInfoDetailEO); + } + + /** + * 导出excel + * + * @param request + * @param processInfoDetailEO + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ProcessInfoDetailEO processInfoDetailEO) { + return super.exportXls(request, processInfoDetailEO, ProcessInfoDetailEO.class, "流程信息明细表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProcessInfoDetailEO.class); + } + + /** + * 流程调用接口 + * @param jsonObject + * @return + */ + @AutoLog(value = "流程信息明细表-流程调用") + @ApiOperation(value="流程信息明细表-流程调用", notes="流程信息明细表-流程调用") + @PostMapping(value = "/processCall") + public Result processCall(@RequestBody JSONObject jsonObject){ + return this.processInfoDetailEOService.processCall(jsonObject); + } + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoEOController.java new file mode 100644 index 000000000..c1cd92e69 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProcessInfoEOController.java @@ -0,0 +1,183 @@ +package com.jero.modules.todoCenter.controller; + +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONObject; +import com.jero.common.api.vo.Result; +import com.jero.common.system.query.QueryGenerator; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import com.jero.common.system.base.controller.JeroController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.jero.common.aspect.annotation.AutoLog; + + + /** + * @Description: 流程信息表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Api(tags="流程信息表") +@RestController +@RequestMapping("/todoCenter/processInfoEO") +@Slf4j +public class ProcessInfoEOController extends JeroController { + @Autowired + private IProcessInfoEOService processInfoEOService; + + /** + * 分页列表查询 + * + * @param processInfoEO + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "流程信息表-分页列表查询") + @ApiOperation(value="流程信息表-分页列表查询", notes="流程信息表-分页列表查询") + @GetMapping(value = "/page") + public Result queryPageList(ProcessInfoEO processInfoEO, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(processInfoEO, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = processInfoEOService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 列表查询 + * + * @return + */ + @AutoLog(value = "流程信息表-列表查询") + @ApiOperation(value="流程信息表-列表查询", notes="流程信息表-列表查询") + @GetMapping(value = "/list") + public Result> queryList() { + List list = processInfoEOService.queryList(); + return Result.OK(list); + } + + /** + * 添加 + * + * @param processInfoEO + * @return + */ + @AutoLog(value = "流程信息表-添加") + @ApiOperation(value="流程信息表-添加", notes="流程信息表-添加") + @PostMapping(value = "/add") + public Result add(@Validated @RequestBody ProcessInfoEO processInfoEO) { + processInfoEOService.add(processInfoEO); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param processInfoEO + * @return + */ + @AutoLog(value = "流程信息表-编辑") + @ApiOperation(value="流程信息表-编辑", notes="流程信息表-编辑") + @PutMapping(value = "/edit") + public Result edit(@Validated @RequestBody ProcessInfoEO processInfoEO) { + processInfoEOService.editById(processInfoEO); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "流程信息表-通过id删除") + @ApiOperation(value="流程信息表-通过id删除", notes="流程信息表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + processInfoEOService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "流程信息表-批量删除") + @ApiOperation(value="流程信息表-批量删除", notes="流程信息表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.processInfoEOService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "流程信息表-通过id查询") + @ApiOperation(value="流程信息表-通过id查询", notes="流程信息表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + ProcessInfoEO processInfoEO = processInfoEOService.queryById(id); + if(processInfoEO==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(processInfoEO); + } + + /** + * 导出excel + * + * @param request + * @param processInfoEO + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ProcessInfoEO processInfoEO) { + return super.exportXls(request, processInfoEO, ProcessInfoEO.class, "流程信息表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ProcessInfoEO.class); + } + + /** + * 流程调用接口 + * @param jsonObject + * @return + */ + @AutoLog(value = "流程信息表-流程调用") + @ApiOperation(value="流程信息表-流程调用", notes="流程信息表-流程调用") + @PostMapping(value = "/processCall") + public Result processCall(@RequestBody JSONObject jsonObject){ + return this.processInfoEOService.processCall(jsonObject); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java new file mode 100644 index 000000000..06a5f5d59 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/controller/ProjectProcessTodoCenterController.java @@ -0,0 +1,57 @@ +package com.jero.modules.todoCenter.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.modules.todoCenter.service.IProcessInfoEOService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@Api(tags="待办中心-项目流程") +@RestController +@RequestMapping("/todoCenter/projectProcess") +@Slf4j +public class ProjectProcessTodoCenterController { + + @Autowired + private IProcessInfoEOService processInfoEOService; + + @AutoLog(value = "分页查询-待办任务列表") + @ApiOperation(value="分页查询-待办任务列表", notes="分页查询-待办任务列表") + @GetMapping(value = "/todoTaskList") + public Result todoTaskList(@RequestParam Map params) { + IPage page = this.processInfoEOService.projectProcessTodoTaskList(params); + return Result.OK(page); + } + + @AutoLog(value = "分页查询-已办任务列表") + @ApiOperation(value="分页查询-已办任务列表", notes="分页查询-已办任务列表") + @GetMapping(value = "/doneProcess") + public Result doneProcess(@RequestParam Map params) { + IPage page = this.processInfoEOService.projectProcessDoneProcess(params); + return Result.OK(page); + } + + @AutoLog(value = "分页查询-已发任务列表") + @ApiOperation(value="分页查询-已发任务列表", notes="分页查询-已发任务列表") + @GetMapping(value = "/issuedProcess") + public Result issuedProcess(@RequestParam Map params) { + IPage page = this.processInfoEOService.projectProcessIssuedProcess(params); + return Result.OK(page); + } + + @AutoLog(value = "待办中心-法规评估-初始化历史数据") + @ApiOperation(value="待办中心-法规评估-初始化历史数据", notes="待办中心-法规评估-初始化历史数据") + @GetMapping(value = "/initHistoryData") + public Result initHistoryData(@RequestParam Map params) { + return this.processInfoEOService.initHistoryData(params); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ParamsManifestTodoCenterEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ParamsManifestTodoCenterEO.java new file mode 100644 index 000000000..e3ef18811 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ParamsManifestTodoCenterEO.java @@ -0,0 +1,47 @@ +package com.jero.modules.todoCenter.entity; + +import lombok.Data; + +import java.util.Date; + +@Data +public class ParamsManifestTodoCenterEO { + /** + * 参数清单id + */ + private String id; + + /** + * 相关项目名称 + */ + private String projectName; + + /** + * 参数清单标题 + */ + private String title; + + /** + * 相关项目版本 + */ + private String projectVersion; + + /** + * 待发起数量 包括状态:待发起收集,变更,工程接口人退回 + */ + private Integer waitCollectNum; + + /** + * 待工程接口人处理数量(即待分配) 包括状态:待工程接口人处理,填写人退回 + */ + private Integer waitSdtNum; + + /** + * 待填写数量 包括状态:待填写,认证工程师退回 + */ + private Integer waitFillNum; + + private Date createTime; + private String state; + private String projectId; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoDetailEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoDetailEO.java new file mode 100644 index 000000000..5cf2f713d --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoDetailEO.java @@ -0,0 +1,122 @@ +package com.jero.modules.todoCenter.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import com.jero.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + + +/** + * @Description: 流程信息明细表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Data +@TableName("process_info_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="process_info_detail对象", description="流程信息明细表") +public class ProcessInfoDetailEO implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**流程实例id*/ + @Excel(name = "流程实例id", width = 15) + @ApiModelProperty(value = "流程实例id") + private java.lang.String actiProcInstId; + + /**待办id*/ + @Excel(name = "待办id", width = 15) + @ApiModelProperty(value = "待办id") + private java.lang.String taskId; + + /**处理人id*/ + @Excel(name = "处理人id", width = 15) + @ApiModelProperty(value = "处理人id") + private java.lang.String userId; + + /**任务状态:待办/已办*/ + @Excel(name = "任务状态:待办/已办", width = 15) + @ApiModelProperty(value = "任务状态:待办/已办") + private java.lang.String status; + + /**任务节点定义key*/ + @Excel(name = "任务节点定义key", width = 15) + @ApiModelProperty(value = "任务节点定义key") + private java.lang.String taskDefinitionKey; + + /**提交时间*/ + @Excel(name = "提交时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "提交时间") + private java.util.Date submitTime; + + /**流程信息id*/ + @Excel(name = "流程信息id", width = 15) + @ApiModelProperty(value = "流程信息id") + private java.lang.String processInfoId; + + /**法规清单id*/ + @Excel(name = "法规清单id", width = 15) + @ApiModelProperty(value = "法规清单id") + private java.lang.String projectLawsInventoryId; + + /**文档库id/标准id*/ + @Excel(name = "文档库id/标准id", width = 15) + @ApiModelProperty(value = "文档库id/标准id") + private java.lang.String bussDocumentLibraryId; + + /**流程类型*/ + @Excel(name = "流程类型", width = 15) + @ApiModelProperty(value = "流程类型") + private java.lang.String flowType; + + /**截止时间*/ + @Excel(name = "截止时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "截止时间") + private java.util.Date endTime; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoEO.java new file mode 100644 index 000000000..9c3de82f9 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/entity/ProcessInfoEO.java @@ -0,0 +1,141 @@ +package com.jero.modules.todoCenter.entity; + +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 流程信息表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +@Data +@TableName("process_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="process_info对象", description="流程信息表") +public class ProcessInfoEO implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + + /**项目库id*/ + @Excel(name = "项目库id", width = 15) + @ApiModelProperty(value = "项目库id") + private java.lang.String projectLibraryId; + + /**法规清单id*/ + @Excel(name = "法规清单id", width = 15) + @ApiModelProperty(value = "法规清单id") + private java.lang.String projectLawsInventoryId; + + /**文档库id/标准id*/ + @Excel(name = "文档库id/标准id", width = 15) + @ApiModelProperty(value = "文档库id/标准id") + private java.lang.String bussDocumentLibraryId; + + /**流程实例id*/ + @Excel(name = "流程实例id", width = 15) + @ApiModelProperty(value = "流程实例id") + private java.lang.String actiProcInstId; + + /**流程类型*/ + @Excel(name = "流程类型", width = 15) + @ApiModelProperty(value = "流程类型") + private java.lang.String flowType; + + /**截止日期*/ + @Excel(name = "截止日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "截止日期") + private java.util.Date endTime; + + /**任务状态*/ + @Excel(name = "任务状态", width = 15) + @ApiModelProperty(value = "任务状态") + private java.lang.String status; + + @ApiModelProperty(value = "流程编号") + private String prcNum; + + @ApiModelProperty(value = "流程名称") + private String prcName; + + /**流程类型展示字段*/ + @TableField(exist = false) + private String flowTypeShow; + + /**任务状态展示字段*/ + @TableField(exist = false) + private String statusShow; + + /**上一个操作人 用户id*/ + @TableField(exist = false) + private String lastAssignee; + @TableField(exist = false) + private String lastAssigneeName; + + /**当前操作人/代理人 用户id*/ + @TableField(exist = false) + private String assignee; + @TableField(exist = false) + private String assigneeName; + + /**标准编号*/ + @TableField(exist = false) + private String serialNumber; + /**标准标题*/ + @TableField(exist = false) + private String title; + /**项目名称*/ + @TableField(exist = false) + private String projectName; + /**年份*/ + @TableField(exist = false) + private String yearName; + /**待办id*/ + @TableField(exist = false) + private String taskId; + /**任务节点定义key*/ + @TableField(exist = false) + private String taskDefinitionKey; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/enums/TodoCenterStatusEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/enums/TodoCenterStatusEnum.java new file mode 100644 index 000000000..9bcadcf23 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/enums/TodoCenterStatusEnum.java @@ -0,0 +1,64 @@ +package com.jero.modules.todoCenter.enums; + +import com.jero.common.constant.enums.CutEnum; +import org.apache.commons.lang3.StringUtils; + +/** + * 待办中心状态枚举类 + */ +public enum TodoCenterStatusEnum { + LIST_TO_CONFIRM("待确认","List to confirm","List to confirm"), + COMPLETED("已完成","Completed","Completed"), + INQUIRY("询问","Inquiry","Inquiry"), + TO_SUBMIT("待提交","To submit","To submit"), + TO_AUDIT("待审核","To audit","To audit"), + ; + + String cnName; + String enName; + String value; + + private TodoCenterStatusEnum(String cnName,String enName, String value) { + this.cnName = cnName; + this.enName = enName; + this.value = value; + } + + public String getCnName() { + return cnName; + } + + public void setCnName(String cnName) { + this.cnName = cnName; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static String getTextByValue(String value,String cut) { + TodoCenterStatusEnum[] values = values(); + for (TodoCenterStatusEnum todoCenterStatusEnum : values) { + if (todoCenterStatusEnum.value.equals(value)) { + if(StringUtils.equals(cut, CutEnum.CN.getValue())){ + return todoCenterStatusEnum.cnName; + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + return todoCenterStatusEnum.enName; + } + } + } + return null; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoDetailEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoDetailEOMapper.java new file mode 100644 index 000000000..448a6504b --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoDetailEOMapper.java @@ -0,0 +1,17 @@ +package com.jero.modules.todoCenter.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.jero.modules.todoCenter.entity.ProcessInfoDetailEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 流程信息明细表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +public interface ProcessInfoDetailEOMapper extends BaseMapper { + +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoEOMapper.java new file mode 100644 index 000000000..86b9a32f8 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/ProcessInfoEOMapper.java @@ -0,0 +1,40 @@ +package com.jero.modules.todoCenter.mapper; + +import java.util.Map; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jero.modules.todoCenter.entity.ProcessInfoEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.todoCenter.vo.ProcessInfoVO; + +/** + * @Description: 流程信息表 + * @Author: jero-boot + * @Date: 2022-10-14 + * @Version: V1.0 + */ +public interface ProcessInfoEOMapper extends BaseMapper { + /** + * 查询项目流程分页列表(已办、已发使用) + * @param page + * @param params + * @return + */ + IPage queryProjectProcessPageList(IPage page, Map params); + + /**+ + * 查询项目流程-待办列表 + * @param page + * @param params + * @return + */ + IPage queryProjectProcessTodoTaskListList(IPage page,Map params); + + /** + * 查询法规评估流程分页列表 + * @param page + * @param params + * @return + */ + IPage queryLawsAssessPageList(IPage page, Map params); +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoDetailEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoDetailEOMapper.xml new file mode 100644 index 000000000..ce8f4c357 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoDetailEOMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml new file mode 100644 index 000000000..546b830d8 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/mapper/xml/ProcessInfoEOMapper.xml @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + and ( + temp.project_name like CONCAT(CONCAT('%',#{params.projectName}),'%') + or temp.year_name like CONCAT(CONCAT('%',#{params.projectName}),'%') + ) + + + and temp.standard_info like CONCAT(CONCAT('%',#{params.standardInfo}),'%') + + + and temp.flow_type = #{params.flowType} + + + and temp.status = #{params.status} + + + + + + + + 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..5122b30ec --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/service/impl/ProcessInfoEOServiceImpl.java @@ -0,0 +1,1064 @@ +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()); + params.put("queryType","issuedProcess"); + + 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..94a903a45 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/todoCenter/vo/ProcessInfoVO.java @@ -0,0 +1,110 @@ +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 titleEn; + /**项目名称*/ + 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; + + /**标准信息**/ + private String standardInfo; +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java index beab9d1eb..881946767 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/warn/service/LawsWarnService.java @@ -13,6 +13,7 @@ import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.feishu.vo.FeishuMsgVo; import com.jero.modules.system.entity.SysAnnouncement; import com.jero.modules.system.entity.SysCategory; import com.jero.modules.system.entity.SysDictItem; @@ -425,12 +426,17 @@ public class LawsWarnService { bussDocumentLibraryEOService.sendWebsocket(StringUtils.join(thirdIdList, ","), contentInfo); //飞书 try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (String s : urlList) { + FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); String encode = UriEncoder.encode(s); List list = new ArrayList<>(); mapList.stream().forEach(e->{ if(s.contains((String)e.get("id"))){ String serialNumber = StringUtils.valueOf(e.get("serial_number")); + //封装飞书消息实体类 + setFeishuMsgVo(sysUser, sdf, feishuMsgVo, encode, e, serialNumber); + String timeContent = ""; if("1".equals(flag)){ String value = StringUtils.valueOf(e.get("xin1_che1_xing2_shi2_shi1_ri4_qi1")); @@ -452,8 +458,11 @@ public class LawsWarnService { list.add(serialNumber + timeContent); } }); - String contentTemp = sysUser.getUsername() + " has pushed " + StringUtils.join(list, ",") + ", Please be reminded to check it out."; - iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentTemp, MessageTypeEnum.PUSH.getName(), encode); + iFeishuService.sendCardMsgWarn(thirdIdList.toArray(new String[]{}), feishuMsgVo); + + +// String contentTemp = sysUser.getUsername() + " has pushed " + StringUtils.join(list, ",") + ", Please be reminded to check it out."; +// iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentTemp, MessageTypeEnum.PUSH.getName(), encode); } } catch (IOException e) { e.printStackTrace(); @@ -461,6 +470,38 @@ public class LawsWarnService { bussDocumentLibraryEOService.sendWebsocket(documentIds, contentInfo); return "推送成功"; } + + private void setFeishuMsgVo(LoginUser sysUser, SimpleDateFormat sdf, FeishuMsgVo feishuMsgVo, String encode, Map e, String serialNumber) { + String documentTitleCn = ""; //文档标题 + String documentTitleEn = ""; //文档标题 + String newTypeExecutionDate = ""; //新车型实施日期 + String newVehicleExecutionDate = ""; //在产车实施日期 + if(ObjectUtils.isNotEmpty(e.get("title"))){ + documentTitleCn = String.valueOf(e.get("title")); + } + if(ObjectUtils.isNotEmpty(e.get("title_en"))){ + documentTitleEn = String.valueOf(e.get("title_en")); + } + if(ObjectUtils.isNotEmpty(e.get("xin1_che1_xing2_shi2_shi1_ri4_qi1"))){ + newTypeExecutionDate = sdf.format(e.get("xin1_che1_xing2_shi2_shi1_ri4_qi1")); + } + if(ObjectUtils.isNotEmpty(e.get("implement_time"))){ + newVehicleExecutionDate = sdf.format(e.get("implement_time")); + } + String contentInfoFei = sysUser.getUsername() +" shared Regulation Early Warning infomation with you."; + String contentInfoFeiCn = sysUser.getUsername() +"向您分享了法规预警信息."; + + + feishuMsgVo.setTitle(MessageTypeEnum.WARN.getNameCn()+"/"+MessageTypeEnum.WARN.getName()); + feishuMsgVo.setUrl(encode); + feishuMsgVo.setContentEn(contentInfoFei); + feishuMsgVo.setContent(contentInfoFeiCn); + feishuMsgVo.setRegulationNo(serialNumber); + feishuMsgVo.setNewTypeExecutionDate(newTypeExecutionDate); + feishuMsgVo.setNewVehicleExecutionDate(newVehicleExecutionDate); + feishuMsgVo.setDocumentTitleCn(documentTitleCn); + feishuMsgVo.setDocumentTitleEn(documentTitleEn); + } // public String warnPullMessage(String departIds, String userIds, String documentIds,String flag) { // Set allDepartIds = new HashSet<>(); // //查询当前部门下所有部门 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..28a479a45 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,21 @@ public interface WorkFlowFeignClient { @RequestMapping(value = "/bat-wkflow/deleteProcessInstanceByPrcIds",method = RequestMethod.GET) Result deleteProcessInstanceByPrcIds(@RequestParam("prcIds") String prcIds); + + @RequestMapping(value = "/bat-wkflow/task/getLawsOpinionGatherPrcInfo",method = RequestMethod.GET) + Map getLawsOpinionGatherPrcInfo(@RequestParam("lawsOpinionGatherId") String lawsOpinionGatherId); + + /** + * 根据流程类型,查询未完成的流程信息 + * @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-boot/jero-boot-single-startup/src/main/java/com/jero/LawNioApplication.java b/jero-boot/jero-boot-single-startup/src/main/java/com/jero/LawNioApplication.java index 207380e88..87c4ee8cb 100644 --- a/jero-boot/jero-boot-single-startup/src/main/java/com/jero/LawNioApplication.java +++ b/jero-boot/jero-boot-single-startup/src/main/java/com/jero/LawNioApplication.java @@ -11,6 +11,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.socket.server.standard.ServerEndpointExporter; import java.net.InetAddress; @@ -25,6 +26,7 @@ import java.net.UnknownHostException; @SpringBootApplication @EnableEurekaClient @EnableFeignClients +@EnableScheduling public class LawNioApplication extends SpringBootServletInitializer { @Override diff --git a/jero-web/src/assets/ditu.png b/jero-web/src/assets/ditu.png new file mode 100644 index 000000000..c1c236dec Binary files /dev/null and b/jero-web/src/assets/ditu.png differ diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 2f4f0c4f1..a8968126c 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -1337,4 +1337,26 @@ 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', + secondaryDirectory:'Secondary Directory', + OnlyPersonsCanBeSelected:'The maximum upper limit is exceeded; Only 100 persons can be selected', + projectVersion:'Project Version', + softwareVersion:'Authentication Software version', + versionStatistics:'Version statistics', + addSubproject:'Add Subproject', + Topping:'Topping', + cancelTopping:'Cancel Topping', + relatedProjectVersion:'Related project version', } \ 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..75ccb1096 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,26 @@ module.exports = { Topping:'置顶', cancelTopping:'取消置顶', relatedProjectVersion:'相关项目版本', + taskType:'任务类型', + taskStatus:'任务状态', + taskConfirmationHandling:'任务确认办理', + relatedVersion:'相关版本', + filledBy:'待分配填写人', + parameterToBeInitiated:'参数待发起', + listTaskConfirmation:'清单任务确认', + completednum: '待填写', + filledBynum:'待分配填写人', + parameterToBeInitiatednum:'参数待发起', + listToConfirm:'待确认', + toSubmit:'待提交', + toAudit:'待审核', + secondaryDirectory:'二级目录', + OnlyPersonsCanBeSelected:'超出最大上限;最多只能选择100个人员', + projectVersion:'项目版本', + softwareVersion:'认证软件版本', + versionStatistics:'版本统计', + addSubproject:'添加子项目', + Topping:'置顶', + cancelTopping:'取消置顶', + relatedProjectVersion:'相关项目版本', } \ 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/components/tableCollection/index.vue b/jero-web/src/components/tableCollection/index.vue index cc605e642..0f1cd2343 100644 --- a/jero-web/src/components/tableCollection/index.vue +++ b/jero-web/src/components/tableCollection/index.vue @@ -19,12 +19,16 @@ {{ text }} + + {{text}} +
- + {{ item.db_field_txt }} {{$t('See')}}
- + {{$t('See')}} @@ -55,7 +59,7 @@ {{ (record.dataValue == null || record.dataValue == 'undefined')? '--': record.dataValue }} + @click='ondataValueTobe(record)'>{{ (record.dataValue == null || record.dataValue == 'undefined')? '--': record.dataValue }} {{ (record.dataValue == null || record.dataValue == 'undefined')? '--': record.dataValue }} @@ -135,14 +139,14 @@ - - - - - - - - + + + + + + + + @@ -235,7 +240,7 @@ default: {}, require: true }, - description:'', + description: '', formInline: { type: Object, default: true @@ -300,7 +305,7 @@ indeterminate: false, columns: [], content: [], - confirmLoading:false, + confirmLoading: false, selectedRowKeys: [], selectedRowrowValue: [], dataSource: [], @@ -316,7 +321,7 @@ sdt: 0, // 工程接口人 dre: 0, // 填写人 areaVisible: false, - areaVisiblezr:false, + areaVisiblezr: false, form: {}, rules: { querySdt: [ @@ -342,13 +347,13 @@ xs: { span: 24 }, sm: { span: 7 } }, - queryParamQuery:{}, - queryParam:{}, + queryParamQuery: {}, + queryParam: {}, querySdtList: [], // 工程接口人 Dateline: {}, getquerySdtId: '', // 当前工程接口人的id areaVisibleView: false, // 查看配置得弹框 - seeVisibleView:false, + seeVisibleView: false, configDetail: {} // 查看配置得详细信息 } }, @@ -394,7 +399,7 @@ this.$emit('handlePreservation') this.getTableList() }, - onClickTitle(val){ + onClickTitle(val) { console.log(val) this.description = val.description this.seeVisibleView = true @@ -455,7 +460,11 @@ // 责任领域 保存 handleSubmitzr(record) { let _this = this - let param = { dutyTerritory: this.Dateline.queryzr, ids: this.getquerySdtId,paramsManifestId: this.$route.query.id, } + let param = { + dutyTerritory: this.Dateline.queryzr, + ids: this.getquerySdtId, + paramsManifestId: this.$route.query.id + } this.$refs.ruleFormOne.validate(valid => { if (valid) { this.confirmLoading = true @@ -538,7 +547,7 @@ this.areaVisible = false this.$refs['ruleForm'].resetFields() }, - cancel(){ + cancel() { this.areaVisiblezr = false this.$refs['ruleFormOne'].resetFields() }, @@ -597,7 +606,7 @@ } getAction('/params/userTypeLog/queryCurrentType', query).then((res) => { if (res.success) { - this.queryParamQuery = {...this.queryParamQuery} + this.queryParamQuery = { ...this.queryParamQuery } if (res.result && res.result.userType) { if (!(result.some(val => val.value == res.result.userType))) { @@ -631,7 +640,7 @@ let params = { paramsManifestId: paramsManifestid, flag: '7', - userType:userType, + userType: userType } getAction(url, params).then((res) => { if (res.success) { @@ -662,25 +671,27 @@ dataIndex: res.db_field_name, align: 'center', // ellipsis: true, - fixed: res.click5?'left':'', + fixed: res.click5 ? 'left' : '', sorter: res.sort, width: 160 }) - console.log(res) this.columns[index].scopedSlots = { customRender: 'titleName' } - if(res.click1){ + if (res.db_field_name == 'nioNumber') { + this.columns[index].width = 100 + } + if (res.click1) { this.columns[index].scopedSlots = { customRender: 'operationzr' } } - if(res.click2){ + if (res.click2) { this.columns[index].scopedSlots = { customRender: 'ParameterDescription' } } - if(res.click3){ + if (res.click3) { this.columns[index].scopedSlots = { customRender: 'paramsNameDescription' } @@ -691,6 +702,12 @@ customRender: 'operationbtn' } } + if (res.db_field_name == 'paramsName') { + this.columns[index].width = 300 + this.columns[index].scopedSlots = { + customRender: 'paramsName' + } + } } }) this.columns = [...this.columns] @@ -707,7 +724,7 @@ let params = { paramsManifestId: this.$route.query.id, pageNo: this.pageNo, - pageSize: this.pageSize, + pageSize: this.pageSize // userTypes: this.currentPersonRole } let url @@ -812,7 +829,7 @@ // }) let tt = [] if (this.currentPersonRole !== 'dre') { - console.log(res.result.records,'res.result.records') + console.log(res.result.records, 'res.result.records') res.result.records.forEach((Obj) => { Object.keys(Obj).forEach((item) => { if (Obj[item] instanceof Object && Obj[item].controlType !== undefined) { @@ -912,6 +929,7 @@ border: none !important; padding: 0 !important; } + //::v-deep .ant-table-row:first-child { // background: #fff!important; // /*opacity: 0.9;*/ @@ -952,6 +970,7 @@ font-weight: 400; } } + .textfield { width: 100%; margin-bottom: 8px; @@ -981,6 +1000,19 @@ } } } + + .textName { + width: 100%; + overflow: hidden; + display: -webkit-box; + text-overflow: ellipsis; + /*! autoprefixer: off */ + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + /*! autoprefixer: on;*/ + text-justify: inter-ideograph; + word-break: break-all + } \ No newline at end of file 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..85420a896 100644 --- a/jero-web/src/views/processCenter/components/evaluatorFeedback.vue +++ b/jero-web/src/views/processCenter/components/evaluatorFeedback.vue @@ -15,7 +15,15 @@ {{$t('complianceResults')}}
- {{formInline.complianceResult == 'Compliance'?$t('accord'):$t('nonConformity')}} + + {{$t('accord')}} + + + {{$t('nonConformity')}} + + + -- +
{{$t('relevantSections')}}
- {{item.relatedSection}} + {{item.relatedSection ?item.relatedSection : '--'}}
{{$t('problemDescription')}}
- {{item.issueOrSuggest}} + {{item.issueOrSuggest ? item.issueOrSuggest :'--'}}
{{$t('relevantSections')}}
- {{item.relatedSection}} + {{item.relatedSection?item.relatedSection : '--'}}
@@ -132,7 +140,7 @@ :title="$t('problemDescription')">{{$t('problemDescription')}}
- {{item.issueOrSuggest}} + {{item.issueOrSuggest ? item.issueOrSuggest:'--'}}
@@ -156,12 +164,13 @@ -
+
{{$t('sponsorReview')}}
- +
@@ -175,6 +184,18 @@
+ + + + + + + + + + + +
@@ -259,7 +280,8 @@ }, disabled: false, uploadIndex: '', - dataList: [] + dataList: [], + isTrue: false } }, mounted() { @@ -283,8 +305,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 +471,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..f611b6cbc 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')}} + -- { res.sponsorFeedback = '' }) @@ -306,10 +387,18 @@ }, computed: { columns() { - if (this.$route.query.taskDefinitionKey == 'pgrqr') { - return this.columnsTwo + let disabled = false + if (this.$route.query.isDisabled) { + disabled = JSON.parse(this.$route.query.isDisabled) + } + if (disabled) { + return this.columnsOne } else { - return this.columnsThree + if (this.$route.query.taskDefinitionKey == 'pgrqr') { + return this.columnsTwo + } else { + return this.columnsThree + } } } }, @@ -345,14 +434,14 @@ this.$message.warning(this.$t('PleaseCompleteList')) return } - Object.keys(this.dataSource[i]).forEach(res=>{ + 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 +450,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..5b427777a 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')}}
@@ -53,6 +54,7 @@ }]">
@@ -62,7 +64,7 @@
- * + * {{$t('questionsSuggestions')}}
@@ -72,6 +74,7 @@ }]">
@@ -79,7 +82,7 @@
- * + * {{$t('reason')}}
@@ -112,6 +116,7 @@
+ @@ -166,7 +171,9 @@ } this.formInline = { ...this.formInline } }) - + if (this.$route.query.isDisabled) { + this.disabled = JSON.parse(this.$route.query.isDisabled) + } }, methods: { clickButtonToUpload(item, index) { @@ -301,4 +308,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..a282c6bd0 --- /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..118d34cae --- /dev/null +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/dealtWith.vue @@ -0,0 +1,338 @@ + + + + + \ 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..ec3a33458 --- /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..bd405bd48 --- /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..03459bc80 --- /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..f37f9d6b6 --- /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..febfb2bf7 --- /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..7849db357 --- /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