合并分支 'FOTON' 到 'master'

Foton

查看合并请求 laws-foton-slrs/foton-wkflow-rest!14
This commit is contained in:
高嵩
2023-02-03 17:02:45 +08:00
586 changed files with 45398 additions and 245 deletions
@@ -0,0 +1,14 @@
ALTER TABLE `foton-bat-wkflow`.`bus_process_name`
MODIFY COLUMN `PRC_NAME` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '流程名称' AFTER `ID`;
ALTER TABLE `foton-bat-wkflow`.`bus_process_new`
MODIFY COLUMN `PRC_NAME` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '流程名称' AFTER `SUB_ID`;
ALTER TABLE `foton-bat-wkflow`.`bus_process_entrust`
MODIFY COLUMN `PRC_NAME` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL AFTER `TASK_NAME`;
ALTER TABLE `foton-bat-wkflow`.`bus_process_model_his`
MODIFY COLUMN `PRC_NAME` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '流程名称' AFTER `P_ID`;
ALTER TABLE `foton-bat-wkflow`.`bus_process_evaluation_his`
MODIFY COLUMN `PRC_NAME` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '流程名称' AFTER `P_ID`;
@@ -0,0 +1,10 @@
CREATE TABLE `es_prc_relation` (
`id` varchar(32) NOT NULL,
`es_id` varchar(32) DEFAULT NULL COMMENT '企标计划ID',
`prc_id` varchar(33) DEFAULT NULL COMMENT '企标制修订技术标准流程实例ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`oa_flag` varchar(2) DEFAULT NULL COMMENT 'OA待办标识 0-已办,1-待办',
`prc_id_gk` varchar(33) DEFAULT NULL COMMENT '企标计划管控流程的实例ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企标计划和企标制修订流程关联表';
@@ -0,0 +1,8 @@
CREATE TABLE `es_tech_relation` (
`id` varchar(32) NOT NULL,
`es_id` varchar(32) DEFAULT NULL COMMENT '企标计划ID',
`prc_id` varchar(33) DEFAULT NULL COMMENT '复审流程实例ID',
`finish` varchar(10) DEFAULT NULL COMMENT '流程是否结束',
`prc_tech_id` varchar(33) DEFAULT NULL COMMENT '企标制修订技术标准流程实例ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+86 -1
View File
@@ -29,17 +29,35 @@
<artifactId>fk-util</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- scheduled所属资源为spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Feign客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.2.RELEASE</version>
<version>2.2.0.RELEASE</version>
</dependency>
<!-- DB 相关 -->
<dependency>
@@ -71,6 +89,29 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- CXF webservice -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-logging</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
<!-- CXF webservice -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
@@ -106,6 +147,13 @@
<artifactId>activiti-modeler</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
@@ -117,12 +165,49 @@
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.9.1</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
</dependencies>
<build>
@@ -1,5 +1,7 @@
package com.ydw.bat.wkflow;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -18,8 +20,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
*/
@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
@EnableAutoConfiguration(exclude = {
@SpringBootApplication(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.activiti.spring.boot.SecurityAutoConfiguration.class })
@MapperScan("com.ydw.bat.wkflow.business.*.mapper")
@@ -28,6 +29,8 @@ public class BatWkflowApplication {
public static void main(String[] args) {
SpringApplication.run(BatWkflowApplication.class, args);
// JSONObject jsonObject= JSON.parseObject("{\"startUser\":\"WY8J26MH23\",\"engineer\":\"engineer\",\"dockUserList\":[{\"id\":\"zqazqazqa\"},{\"id\":\"xwsxwsxws\"},{\"id\":\"cedcedced\"}],\"actionFlag\":\"0\",\"responUserList\":[{\"id\":\"zqazqazqa\"},{\"id\":\"xwsxwsxws\"},{\"id\":\"cedcedced\"}]}");
// System.out.println(jsonObject.toJSONString());
}
}
@@ -9,6 +9,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_activiti.dto.ProcessRollBackEO;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
@@ -25,6 +26,8 @@ import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.tmsps.fk.common.base.action.BaseAction;
@@ -124,7 +127,7 @@ public class ActivitDefineController extends BaseAction {
// 创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 使用流程定义的名称模糊查询
processDefinitionQuery.processDefinitionCategory("4bdf0b396b4aa6ea10dd5e19956a1e22");
processDefinitionQuery.processDefinitionCategory("e05707228fa5ed7b549198208ab19d97");
long total = processDefinitionQuery.count();
List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list();
List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list);
@@ -155,7 +158,7 @@ public class ActivitDefineController extends BaseAction {
// 创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 使用流程定义的名称模糊查询
processDefinitionQuery.processDefinitionCategory("4bdf0b396b4aa6ea10dd5e19956a1e22");
processDefinitionQuery.processDefinitionCategory("e05707228fa5ed7b549198208ab19d97");
long total = processDefinitionQuery.count();
List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list();
List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list);
@@ -182,37 +185,64 @@ public class ActivitDefineController extends BaseAction {
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(userId);
busProcessName.setCreatUserName(byId.getData().getUname());
busProcessName.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
if(id.equals("bzhyhhgllc")){
String prcName = bpnId;
busProcessName.setPrcType("16");
busProcessName.setPrcName(prcName);
}
ibusprocessnameService.save(busProcessName);
}else {
if (bpnId.indexOf("会议会后") != -1) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
BusProcessName busProcessName = new BusProcessName();
busProcessName.setPrcId(pi.getId());
busProcessName.setCreatTime(sdf.format(new Date()));
busProcessName.setCreatUser(userId);
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(userId);
busProcessName.setCreatUserName(byId.getData().getUname());
busProcessName.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
if (id.equals("bzhyhhgllc")) {
String prcName = bpnId;
busProcessName.setPrcType("16");
busProcessName.setPrcName(prcName);
}
ibusprocessnameService.save(busProcessName);
} else {
QueryWrapper<BusProcessName> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ID", bpnId);
BusProcessName one = ibusprocessnameService.getOne(queryWrapper);
one.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
one.setPrcId(pi.getId());
ibusprocessnameService.saveOrUpdate(one);
QueryWrapper<BusProcessName> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ID", bpnId);
BusProcessName one = ibusprocessnameService.getOne(queryWrapper);
one.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
one.setPrcId(pi.getId());
ibusprocessnameService.saveOrUpdate(one);
}
logger.info("启动流程实例,获取id-->{},实例名称-->{}", pi.getId(), pd.getName());
return WrapMapper.ok(task.getId());
}
@ApiOperation(value = "启动流程-以流程定义id")
@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "流程定义Id"),
@ApiImplicitParam(name = "userId", value = "流程发起人Id") })
@PostMapping("/activiti_define_start_user_rollBack")
public Wrapper<String> activiti_define_start_user_rollBack(@RequestBody ProcessRollBackEO processRollBackEO) {
// 创建查询对象
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
// 使用流程定义的名称模糊查询
processDefinitionQuery.processDefinitionCategory("e05707228fa5ed7b549198208ab19d97");
long total = processDefinitionQuery.count();
List<ProcessDefinition> list = processDefinitionQuery.orderByProcessDefinitionKey().asc().list();
List<Map<String, Object>> definitions = ActivitiTools.turnProcessDefinitions(list);
String pid = "";
for(Map<String, Object> map:definitions){
if(map.get("key").toString().equals(processRollBackEO.getId())){
pid = map.get("id").toString();
}
}
ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(pid).singleResult();
ProcessInstance pi = runtimeService.startProcessInstanceById(pid);
Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
task.setAssignee(processRollBackEO.getUserId());
taskService.saveTask(task);
if(processRollBackEO.getBpnId() == null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
BusProcessName busProcessName = new BusProcessName();
busProcessName.setPrcId(pi.getId());
busProcessName.setCreatTime(sdf.format(new Date()));
busProcessName.setCreatUser(processRollBackEO.getUserId());
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(processRollBackEO.getUserId());
busProcessName.setCreatUserName(byId.getData().getUname());
busProcessName.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
busProcessName.setMes(processRollBackEO.getJson());
ibusprocessnameService.save(busProcessName);
}else {
QueryWrapper<BusProcessName> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("ID", processRollBackEO.getBpnId());
BusProcessName one = ibusprocessnameService.getOne(queryWrapper);
one.setPrcNum(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
one.setPrcId(pi.getId());
ibusprocessnameService.saveOrUpdate(one);
}
logger.info("启动流程实例,获取id-->{},实例名称-->{}", pi.getId(), pd.getName());
return WrapMapper.ok(task.getId());
}
@@ -0,0 +1,17 @@
package com.ydw.bat.wkflow.business_activiti.dto;
import lombok.Data;
@Data
public class ProcessRollBackEO {
private String json;
private String type;
private String id;
private String userId;
private String bpnId;
}
@@ -22,7 +22,7 @@ public class ProjectAssessDTO {
private String saleMarket;
private Date modifyTime;
private String targetMarket;
// private Children children;
// private PCAchildren children;
private List<Children> children;
private String id;
private String productType;
@@ -4,6 +4,7 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
@@ -11,6 +12,7 @@ import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.image.impl.DefaultProcessDiagramGenerator;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +22,7 @@ import org.springframework.stereotype.Service;
public class InstanceService {
protected Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private RepositoryService repositoryService;
@@ -48,7 +50,9 @@ public class InstanceService {
int index = 1;
logger.info("获取已经执行的节点ID");
for (HistoricActivityInstance activityInstance : historicActivityInstanceList) {
executedActivityIdList.add(activityInstance.getActivityId());
if (ObjectUtils.isNotEmpty(activityInstance.getEndTime())) {
executedActivityIdList.add(activityInstance.getActivityId());
}
logger.info("第[" + index + "]个已执行节点=" + activityInstance.getActivityId() + " : "
+ activityInstance.getActivityName());
index++;
@@ -3,13 +3,10 @@ package com.ydw.bat.wkflow.business_activiti.task;
import java.text.SimpleDateFormat;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.*;
import org.activiti.engine.HistoryService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
@@ -42,9 +39,46 @@ public class TaskController {
private IBusProcessNameService iBusProcessNameService;
@Autowired
private IBusProcessNewService iBusProcessNewService;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private ISendTodoLogService sendTodoLogService;
@Autowired
private IBusProcessEntrustService iBusProcessEntrustService;
@ApiOperation(value = "流程实例明细验证是否完成")
@GetMapping("/get_verify_by_instance")
public Map<String,Object> get_verify_by_instance(String taskId,String pId) {
Map<String,Object> map = new TreeMap<>();
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(pId).taskId(taskId).finished();
List<HistoricTaskInstance> list = historicTaskInstanceQuery.list();
long count = 0;
if(!list.isEmpty()){
count = list.size();
}
map.put("hisCount",count);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("TASK_ID",taskId);
queryWrapper.eq("P_ID",pId);
List<BusProcessNew> list1 = iBusProcessNewService.list(queryWrapper);
long count1 = 0;
if(!list1.isEmpty()){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",list1.get(0).getId());
count1 = oaTaskExecService.count(wrapper);
}
map.put("commitStatus",count1);
// OA 流程 是否置为 已办 (用于干活流程 接收逻辑)
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",list1.get(0).getId());
wrapper.eq("MSG_TYPE","1");
long count2 = sendTodoLogService.count(wrapper);
map.put("isNotFinished",count2);
return map;
}
@ApiOperation(value = "流程实例明细列表")
@ApiImplicitParam(name = "prcNum", value = "流程实例id")
@GetMapping("/get_list_by_instance")
@@ -53,8 +87,16 @@ public class TaskController {
queryWrapper.eq("PRC_NUM",prcNum);
BusProcessName one = iBusProcessNameService.getOne(queryWrapper);
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(one.getPrcId()).orderByTaskCreateTime().asc();
.processInstanceId(one.getPrcId()).orderByHistoricTaskInstanceEndTime().asc();
List<HistoricTaskInstance> list2 = historicTaskInstanceQuery.list();
List<HistoricTaskInstance> middle =new ArrayList<>();
list2.forEach(historicTaskInstance -> {
if (null==historicTaskInstance.getEndTime()){
middle.add(historicTaskInstance);
}
});
list2.removeAll(middle);
list2.addAll(middle);
List<Map<String,Object>> list = ActivitiTools.turnHistoricTaskInstance(list2);
for (Map<String, Object> historicTaskInstance : list) {
// if(ChkUtil.isNull(historicTaskInstance.get("assignee"))) {
@@ -65,9 +107,13 @@ public class TaskController {
// if(ChkUtil.isNotNull(map)) {
// historicTaskInstance.put("assignee", map.get("USR_NAME"));
// }
if(StringUtils.isNotBlank(one.getId())){
historicTaskInstance.put("bpnId",one.getId());
}
if(ChkUtil.isNull(historicTaskInstance.get("assignee"))) {
ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
if(listUser.getData()!=null){
// ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
ResponseMessage<List<OrgEO>> listUser = new ResponseMessage<>();
if(false){
List<String> qbgcs = new ArrayList<>();
for (OrgEO orgEO : listUser.getData()) {
qbgcs.add(orgEO.getUserName());
@@ -83,12 +129,12 @@ public class TaskController {
historicTaskInstance.put("assigneeId", assignee.getData().getUsid());
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper2.orderByAsc("CREATE_TIME");
queryWrapper2.orderByDesc("CREATE_TIME");
List<BusProcessEntrust> list1 = iBusProcessEntrustService.list(queryWrapper2);
String str = "";
if(list1.size()>0){
ResponseMessage<UserVO> assignee1 = lawsUserInfoService.getById(list1.get(0).getUserId());
historicTaskInstance.put("assignee", assignee.getData().getUname()+"("+assignee1.getData().getUname()+" 委托)");
historicTaskInstance.put("assignee", assignee.getData().getUname()+"("+assignee1.getData().getUname()+" 转办)");
}
}
}
@@ -97,8 +143,10 @@ public class TaskController {
historicTaskInstance.put("prcNum",one.getPrcNum());
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper1.eq("TASK_INFO",historicTaskInstance.get("name"));
queryWrapper1.isNotNull("COMMIT_TEXT");
List<BusProcessNew> list1 = iBusProcessNewService.list(queryWrapper1);
if(list1.size()>0){
if(!list1.isEmpty()){
historicTaskInstance.put("comment",list1.get(0).getCommitFlag());
historicTaskInstance.put("commentText",list1.get(0).getCommitText());
}else{
@@ -130,4 +178,140 @@ public class TaskController {
}
return list;
}
}
@ApiOperation(value = "流程实例汇总列表")
@ApiImplicitParam(name = "prcNum", value = "流程实例id")
@GetMapping("/get_gather_by_instance")
public List<Map<String, Object>> get_gather_by_instance(String prcNum,String sortWord,String shunxu) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("PRC_NUM",prcNum);
Boolean isGather=false;
Integer index=-1;
Map<String,String> typeData=new HashMap<>();
typeData.put("1","起草");// 标准入库流程数据
typeData.put("buss1","批准");//企标入库
typeData.put("buss2","意见汇总修订");//企标入库
typeData.put("buss3","汇总");//企标复审
typeData.put("4","起草");//标准清单发布流程数据
typeData.put("5","批准");//标准项目合规评估
typeData.put("6","批准");//标准项目合规评估 项目维度
typeData.put("8","合规排查(上传合规举证材料)");// 未符合项整改
typeData.put("9","批准");// 标准解读流程
typeData.put("2","调研结果处理");//标准调研流程
typeData.put("3","意见处理");//标准征求意见
typeData.put("10","清单发布");//项目清单确认
typeData.put("24","起草人修改标准状态");//企标废止
typeData.put("25","起草");//企标制修订计划管控
typeData.put("26","起草");//企标制修订立项计划
typeData.put("23","汇总");//企标复审
BusProcessName one = iBusProcessNameService.getOne(queryWrapper);
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(one.getPrcId()).orderByHistoricTaskInstanceEndTime().asc();
List<HistoricTaskInstance> list2 = historicTaskInstanceQuery.list();
List<HistoricTaskInstance> middle =new ArrayList<>();
list2.forEach(historicTaskInstance -> {
if (null==historicTaskInstance.getEndTime()){
middle.add(historicTaskInstance);
}
});
list2.removeAll(middle);
list2.addAll(middle);
List<Map<String,Object>> list = ActivitiTools.turnHistoricTaskInstance(list2);
for(int i=0;i<list.size();i++){
Map<String, Object> historicTaskInstance= list.get(i);
// if(ChkUtil.isNull(historicTaskInstance.get("assignee"))) {
// continue;
// }
//需要修改 根据当前表结构查询
// Map<String, Object> map = jt.queryForMap("select t.USR_NAME from view_t_au_usr t where t.OBJECT_ID=?", historicTaskInstance.get("assignee"));
// if(ChkUtil.isNotNull(map)) {
// historicTaskInstance.put("assignee", map.get("USR_NAME"));
// }
if(StringUtils.isNotBlank(one.getId())){
historicTaskInstance.put("bpnId",one.getId());
}
if(ChkUtil.isNull(historicTaskInstance.get("assignee"))) {
// ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
ResponseMessage<List<OrgEO>> listUser = new ResponseMessage<>();
if(false){
List<String> qbgcs = new ArrayList<>();
for (OrgEO orgEO : listUser.getData()) {
qbgcs.add(orgEO.getUserName());
}
String str= StringUtils.join(qbgcs, ",");
historicTaskInstance.put("assignee", str);
}
}else{
ResponseMessage<UserVO> assignee = lawsUserInfoService.getById(historicTaskInstance.get("assignee").toString());
if(assignee.getData()!=null){
historicTaskInstance.put("assignee", assignee.getData().getUname());
historicTaskInstance.put("assigneeId", assignee.getData().getUsid());
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper2.orderByDesc("CREATE_TIME");
List<BusProcessEntrust> list1 = iBusProcessEntrustService.list(queryWrapper2);
String str = "";
if(list1.size()>0){
ResponseMessage<UserVO> assignee1 = lawsUserInfoService.getById(list1.get(0).getUserId());
historicTaskInstance.put("assignee", assignee.getData().getUname()+"("+assignee1.getData().getUname()+" 转办)");
}
}
}
historicTaskInstance.put("prcType",one.getPrcType());
historicTaskInstance.put("prcName",one.getPrcName());
historicTaskInstance.put("prcNum",one.getPrcNum());
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("TASK_ID",historicTaskInstance.get("id"));
queryWrapper1.eq("TASK_INFO",historicTaskInstance.get("name"));
queryWrapper1.isNotNull("COMMIT_TEXT");
List<BusProcessNew> list1 = iBusProcessNewService.list(queryWrapper1);
if(!list1.isEmpty()){
historicTaskInstance.put("comment",list1.get(0).getCommitFlag());
historicTaskInstance.put("commentText",list1.get(0).getCommitText());
}else{
historicTaskInstance.put("comment","");
historicTaskInstance.put("commentText","");
}
//判断是否可汇总功能
String prcType=historicTaskInstance.get("prcType").toString();
String name=historicTaskInstance.get("name").toString();
Boolean endTime=historicTaskInstance.get("endTime")!=null;
if (typeData.get(prcType).equals(name)) {
if(endTime) {
isGather = true;
index = i;
}else{
isGather=false;
index=-1;
}
}
}
if(StringUtils.isNotBlank(sortWord)){
Collections.sort(list, new Comparator<Map<String, Object>>() {
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String id1="";
String id2="";
if(sortWord.equals("startTime")){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
id1 = df.format(o1.get(sortWord));
id2 = df.format(o2.get(sortWord));
}else{
id1 = (String) o1.get(sortWord);
id2 = (String) o2.get(sortWord);
}
if(shunxu.equals("desc")){
return id2.compareTo(id1);
}else{
return id1.compareTo(id2);
}
}
});
}
Map<String,Object> m=new HashMap<>();
m.put("isGather",isGather);
m.put("index",index);
list.add(m);
return list;
}
}
@@ -22,8 +22,16 @@ import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.engine.*;
import org.activiti.engine.history.*;
import org.activiti.engine.repository.ProcessDefinition;
@@ -34,10 +42,9 @@ import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.*;
import com.tmsps.fk.common.base.action.BaseAction;
import com.tmsps.fk.common.util.ChkUtil;
@@ -55,6 +62,9 @@ import io.swagger.annotations.ApiOperation;
@RestController
public class TodoTaskController extends BaseAction {
@Value("${oa.flag}")
private Boolean oaFlag;
@Autowired
private TaskService taskService;
@Autowired
@@ -83,6 +93,15 @@ public class TodoTaskController extends BaseAction {
@Autowired
private LawsUserInfoService lawsUserInfoService;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private CreateMQService mqService;
@ApiOperation(value = "我的待办任务列表")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"),
@@ -144,21 +163,44 @@ public class TodoTaskController extends BaseAction {
BusProcessName busProcessName = iBusProcessNameService.getOne(queryWrapper);
String taskIds = "";
for (Map<String, Object> map : entry.getValue()) {
taskIds += map.get("id").toString() + ",";
}
if (busProcessName != null) {
busProcessName.setTaskIds(taskIds);
busProcessName.setTaskInfo(entry.getValue().get(0).get("name").toString());
busProcessName.setMes(null);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String data = sdf.format(entry.getValue().get(0).get("createTime"));
busProcessName.setAcceptTime(data);
todoList.add(busProcessName);
if (busProcessName != null) {
BusProcessName res=new BusProcessName();
BeanUtils.copyProperties(busProcessName,res);
res.setTaskIds(map.get("id").toString());
res.setTaskInfo(entry.getValue().get(0).get("name").toString());
res.setTaskAssignee(entry.getValue().get(0).get("assignee").toString());
res.setMes(null);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String data = sdf.format(entry.getValue().get(0).get("createTime"));
res.setAcceptTime(data);
// //获取新的流程名称
// QueryWrapper<BusProcessNew> queryWrapper1=new QueryWrapper<>();
// queryWrapper1.eq("P_ID",res.getPrcId());
// queryWrapper1.eq("TASK_ID",res.getTaskIds());
// BusProcessNew busProcessNew=iBusProcessNewService.getOne(queryWrapper1);
// res.setPrcName(busProcessNew != null ? (StringUtils.isNotBlank(busProcessNew.getPrcName()) ? busProcessNew.getPrcName() : "") : "" );
todoList.add(res);
}
}
}
return todoList;
}
@ApiOperation(value = "我的待办任务列表速度优化项")
@ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"),
@ApiImplicitParam(name = "current", value = "当前页"),
@ApiImplicitParam(name = "size", value = "每页条数"),
@ApiImplicitParam(name = "userId", value = "用户Id")})
@PostMapping("/todoTaskListNew")
public List<BusProcessName> todoTaskListByUserIdNew(@RequestBody TaskCommonQuery taskCommonQuery) {
// 创建查询对象
List<BusProcessName> busProcessNames=new ArrayList<>();
busProcessNames=iBusProcessNameService.todoTask(taskCommonQuery);
return busProcessNames;
}
@ApiOperation(value = "改派任务")
@ApiImplicitParams({@ApiImplicitParam(name = "taskId", value = "任务id"),
@ApiImplicitParam(name = "assignee", value = "改派人员")})
@@ -192,6 +234,7 @@ public class TodoTaskController extends BaseAction {
List<BusProcessNew> list1 = iBusProcessNewService.list(queryWrapper1);
if (list1.size() > 0) {
for (BusProcessNew busProcessNew : list1) {
webServiceOAService.deleteOAByTaskIdResetTodo(busProcessNew,assignee);
busProcessNew.setUserId(assignee);
iBusProcessNewService.saveOrUpdate(busProcessNew);
}
@@ -209,86 +252,86 @@ public class TodoTaskController extends BaseAction {
}
//发送邮件
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("PRC_ID", pId);
BusProcessName name = iBusProcessNameService.getOne(queryWrapper);
String type = name.getPrcType();
Integer typeInt = 99;
if (StringUtils.isNotEmpty(type)){
typeInt = Integer.valueOf(type);
}
switch (typeInt){
case 1:
type = "法规入库及评估流程";
break;
case 2:
type = "标准法规技术储备评估流程";
break;
case 3:
type = "项目评估流程";
break;
case 4:
type = "企标制修订流程";
break;
case 5:
type = "未符合项跟踪流程";
break;
case 6:
type = "企标制修订申请流程";
break;
case 7:
type = "企标废止流程";
break;
case 8:
type = "企标延期制修订申请流程";
break;
case 9:
type = "标准采购流程";
break;
case 10:
type = "工作组会前申请流程";
break;
case 11:
type = "企标制修订评估流程";
break;
case 12:
type = "企标勘误流程";
break;
case 13:
type = "行政管理要求评估流程";
break;
case 14:
type = "政策入库及评估流程";
break;
case 15:
type = "标准翻译申请流程";
break;
case 16:
type = "工作组会后管理流程";
break;
case 17:
type = "企标备案流程";
break;
case 18:
type = "标准法规清单发布/更新流程";
break;
case 19:
type = "企标复审流程";
break;
default:
break;
}
ResponseMessage<UserVO> userVOResponseMessage = lawsUserInfoService.getById(userId);
UserVO userVO = userVOResponseMessage.getData();
String userName = "";
if (null != userVO) {
userName = userVO.getUname();
}
String content = "您好,"+name.getPrcNum()+"-"+ name.getPrcName() +" "+ userName +"委托您处理待办任务 ,请登录全球标准法规管理系统 ( http://39.98.140.126:10005/#/login ) 办理:链接( http://39.98.140.126:10005/#/processCenter?tabsName=ProcessCenter )。\n" +
" ——来自 全球标准法规管理系统";
lawsUserInfoService.sendEmail(userId,content,"GSRM——【待办任务】["+type+"]有您的待办任务");
logger.info("task {} find " + taskId);
// QueryWrapper queryWrapper = new QueryWrapper();
// queryWrapper.eq("PRC_ID", pId);
// BusProcessName name = iBusProcessNameService.getOne(queryWrapper);
// String type = name.getPrcType();
// Integer typeInt = 99;
// if (StringUtils.isNotEmpty(type)){
// typeInt = Integer.valueOf(type);
// }
// switch (typeInt){
// case 1:
// type = "法规入库及评估流程";
// break;
// case 2:
// type = "标准法规技术储备评估流程";
// break;
// case 3:
// type = "项目评估流程";
// break;
// case 4:
// type = "企标制修订流程";
// break;
// case 5:
// type = "未符合项跟踪流程";
// break;
// case 6:
// type = "企标制修订申请流程";
// break;
// case 7:
// type = "企标废止流程";
// break;
// case 8:
// type = "企标延期制修订申请流程";
// break;
// case 9:
// type = "标准采购流程";
// break;
// case 10:
// type = "工作组会前申请流程";
// break;
// case 11:
// type = "企标制修订评估流程";
// break;
// case 12:
// type = "企标勘误流程";
// break;
// case 13:
// type = "行政管理要求评估流程";
// break;
// case 14:
// type = "政策入库及评估流程";
// break;
// case 15:
// type = "标准翻译申请流程";
// break;
// case 16:
// type = "工作组会后管理流程";
// break;
// case 17:
// type = "企标备案流程";
// break;
// case 18:
// type = "标准法规清单发布/更新流程";
// break;
// case 19:
// type = "企标复审流程";
// break;
// default:
// break;
// }
// ResponseMessage<UserVO> userVOResponseMessage = lawsUserInfoService.getById(userId);
// UserVO userVO = userVOResponseMessage.getData();
// String userName = "";
// if (null != userVO) {
// userName = userVO.getUname();
// }
// String content = "您好,"+name.getPrcNum()+"-"+ name.getPrcName() +" "+ userName +"委托您处理待办任务 ,请登录全球标准法规管理系统 ( http://39.98.140.126:10005/#/login ) 办理:链接( http://39.98.140.126:10005/#/processCenter?tabsName=ProcessCenter )。\n" +
// " ——来自 全球标准法规管理系统";
// lawsUserInfoService.sendEmail(userId,content,"GSRM——【待办任务】["+type+"]有您的待办任务");
//
// logger.info("task {} find " + taskId);
return WrapMapper.ok("改派成功");
}
@@ -299,10 +342,12 @@ public class TodoTaskController extends BaseAction {
public Wrapper<String> completeTaskByUserId(@RequestBody BusMes busMes) {
logger.info("!!!!!!!!!!!!!TaskId!!!!!!!!!!!!!!!"+busMes.getTaskId());
logger.info("!!!!!!!!!!!!!!TaskIds!!!!!!!!!!!!!!"+busMes.getTaskIds());
if (busMes.getTaskId() != null && !busMes.getTaskId().equals("")) {
if (busMes.getTaskId().indexOf(",") > -1) {
String taskIdsrc = busMes.getTaskId().substring(0, busMes.getTaskId().length() - 1);
busMes.setTaskId(taskIdsrc);
}
logger.info("taskId--> " + busMes.getTaskId());
Task task = taskService.createTaskQuery().taskId(busMes.getTaskId()).singleResult();
@@ -317,6 +362,15 @@ public class TodoTaskController extends BaseAction {
formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey());
//发送OA已办
try {
if(oaFlag){
//发送OA已办
webServiceOAService.completeOA(task);
}
}catch (Exception e){
logger.error(e.toString());
}
taskService.complete(busMes.getTaskId());
}
return WrapMapper.ok(task.getProcessInstanceId());
@@ -337,11 +391,62 @@ public class TodoTaskController extends BaseAction {
formSubmitDto.setForm(busMes.getJson());
formSubmitDto.setTask_id(taskId);
formValsService.saveFormVals(formSubmitDto, task.getTaskDefinitionKey());
try {
if(oaFlag){
//发送OA已办
webServiceOAService.completeOA(task);
}
}catch (Exception e){
logger.error(e.toString());
}
taskService.complete(taskId);
}
}
return WrapMapper.ok(prcid);
}
//
// if(notifyTodoAppResult != null){
// if(notifyTodoAppResult.getSIGN().equals("0") && notifyTodoAppResult.getMASSAGE().equals("操作成功")){
//
// }else {
// logger.error("SIGN: "+notifyTodoAppResult.getSIGN()+",MASSAGE: "+notifyTodoAppResult.getMASSAGE());
// return WrapMapper.error("ESP 发送待办任务异常 :" +notifyTodoAppResult.getMASSAGE());
// }
// }else {
// logger.error("--------------------ESP 发送待办任务异常----------------------");
// }
// return WrapMapper.error("ESP 发送待办任务异常");
}
@ApiOperation(value = "完成任务", notes = "流程单个节点任务,直接完成任务,外加部分特殊处理节点更改草稿内容")
@ApiImplicitParams({@ApiImplicitParam(name = "taskId", value = "任务id"),
@ApiImplicitParam(name = "userId", value = "完成任务用户Id")})
@PostMapping("/completeTaskNew")
public Wrapper<String> completeTaskByUserIdNew(@RequestBody BusMesSpecial busMes) {
BusMes busMes1=new BusMes();
BeanUtils.copyProperties(busMes,busMes1);
QueryWrapper<BusProcessNew> queryWrapper=new QueryWrapper<>();
if (null!=busMes.getTaskId() && !busMes.getTaskId().isEmpty()){
queryWrapper.eq("TASK_ID",busMes.getTaskId());
}else {
queryWrapper.eq("TASK_ID",busMes.getTaskIds());
}
BusProcessNew busProcessNew=iBusProcessNewService.getOne(queryWrapper);
if (null!=busMes.getSpecialJson()){
QueryWrapper<BusProcessName> queryWrapper1=new QueryWrapper<>();
queryWrapper1.eq("PRC_ID",busProcessNew.getPId());
BusProcessName busProcessName=iBusProcessNameService.getOne(queryWrapper1);
busProcessName.setMes(busMes.getSpecialJson());
iBusProcessNameService.update(busProcessName,queryWrapper1);
}
return this.completeTaskByUserId(busMes1);
}
private void completeOA(Task task){
}
@ApiOperation(value = "查询流程编号", notes = "根据流程实例ID查询流程编号")
@@ -477,6 +582,7 @@ public class TodoTaskController extends BaseAction {
public BusProcessNew inboundLiaisonDetail(String taskIds, String pId) {
List<String> taskIdList = new ArrayList<>(Arrays.asList(taskIds.split(",")));
List<BusProcessNew> list = iBusProcessNewService.findNoExecuteBusProcessNewForEnd(taskIdList);
if (list.isEmpty()) {
return null;
@@ -484,56 +590,25 @@ public class TodoTaskController extends BaseAction {
BusProcessNew processNew = new BusProcessNew();
BeanUtils.copyProperties(list.get(0), processNew);
if(StringUtils.isNotBlank(pId)){
List<Task> list2 = taskService.createTaskQuery().processInstanceId(pId).active().list();
if(!list2.isEmpty()){
processNew.setNowTaskInfo(list2.get(0).getName());
}
}
JSONObject object3 = JSONObject.parseObject(list.get(0).getMesg());
JSONArray arr2 = new JSONArray();
object3.put("taskBreak", arr2);
processNew.setMesg(object3.toJSONString());
for (BusProcessNew busProcessNew : list) {
JSONObject object = JSONObject.parseObject(busProcessNew.getMesg());
JSONArray array = object.getJSONArray("taskBreak");
JSONArray itemsList = ((JSONObject) array.get(0)).getJSONArray("itemsList");
if (itemsList != null && itemsList.size() > 0) {
itemsList.getJSONObject(0).put("taskId", busProcessNew.getTaskId());
JSONObject objectOld = JSONObject.parseObject(processNew.getMesg());
for (Object obj : objectOld.getJSONArray("taskBreak")) {
if (((Map) obj).get("id").toString().equals(((JSONObject) array.get(0)).getString("id"))) {
JSONArray itemsList1 = ((JSONObject) obj).getJSONArray("itemsList");
itemsList1.add(itemsList.get(0));
}
}
if (objectOld.getJSONArray("taskBreak").size() == 0) {
object.put("itemsList", array);
JSONObject object2 = JSONObject.parseObject(processNew.getMesg());
JSONArray arr = object2.getJSONArray("taskBreak");
arr.add(array.get(0));
processNew.setMesg(object2.toJSONString());
} else {
processNew.setMesg(objectOld.toJSONString());
}
} else {
JSONArray array1 = object.getJSONArray("taskBreak");
((JSONObject) array1.get(0)).put("taskId", busProcessNew.getTaskId());
JSONObject object2 = JSONObject.parseObject(processNew.getMesg());
JSONArray arr = object2.getJSONArray("taskBreak");
Task task = taskService.createTaskQuery().taskId(busProcessNew.getTaskId()).singleResult();
if(task!=null){
if(task.getName().equals("再次下发")){
// if(arr.size()==0){
arr.add(array1.get(0));
// }
}else{
arr.add(array1.get(0));
}
}else{
arr.add(array1.get(0));
}
processNew.setMesg(object2.toJSONString());
}
}
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",processNew.getId());
wrapper.eq("EXEC_TYPE",2);
wrapper.eq("EXEC_STATUS",0);
long count = oaTaskExecService.count(wrapper);
processNew.setCommitStatus(count);
return processNew;
}
/**
@@ -770,7 +845,7 @@ public class TodoTaskController extends BaseAction {
}
ProjectAssessDTO projectAssess = projectAssessDTOList.get(0);
projectAssess.setChildren(children);
// List<Children> childrenList = projectAssess.getChildren();
// List<PCAchildren> childrenList = projectAssess.getChildren();
// childrenList.get(0).setItemsList(itemsLists);
// projectAssess.setChildren(childrenList);
projectAssessResultList.add(projectAssess);
@@ -1700,6 +1775,120 @@ public class TodoTaskController extends BaseAction {
}
}
private Double itemNumPro(String str){
String temp="";
Boolean flag=true;
if(str==null||str.isEmpty())return Double.MAX_VALUE;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
temp+=str.charAt(i);
}else if(flag && str.charAt(i)=='.'){
temp+=str.charAt(i);
flag=false;
}
}
if(temp.isEmpty()){
return Double.MAX_VALUE;
}
return Double.valueOf(temp);
}
@ApiOperation(value = "解读流程汇总详情")
@GetMapping("/decodeDetail")
public BusProcessNew Detail(String taskIds, String pId) {
QueryWrapper<BusProcessNew> q=new QueryWrapper<>();
Set<JSONObject> msgData =new HashSet<>();
List<BusProcessNew> listData = iBusProcessNewService.list(q.eq("P_ID", pId));
//取出此任务中所有审核mesg数据
for (BusProcessNew bpn:listData) {
String mesg = bpn.getMesg();
JSONObject object = JSONObject.parseObject(mesg);
String resolveFlag = object.getString("resolveFlag");
if(bpn.getTaskInfo().equals("审核")&&resolveFlag.equals("1")){
msgData.add(object);
}
}
//将所有mesg数据进行整合
JSONArray jsonArray=new JSONArray();
for (JSONObject jo:msgData) {
jsonArray.addAll(jo.getJSONArray("itemList"));
}
//将mesg数据进行去重
// for (int i = 0; i < jsonArray.size()-1; i++) { //双循环法
// for (int j = i+1; j < jsonArray.size(); j++) {
// if(jsonArray.get(i).equals(jsonArray.get(j))){
// jsonArray.remove(j);
// }
// }
// }
Set<JSONObject> set = new HashSet<>();//hashset法
for(int i = 0 ; i<jsonArray.size();i++){
set.add(jsonArray.getJSONObject(i));
}
jsonArray = JSONArray.parseArray(set.toString());
//将mesg数据进行排序
boolean f=false;
for (int i = 0; i < jsonArray.size()-1; i++) {
for (int j = 0; j < jsonArray.size()-1-i; j++) {
Double itemNum = itemNumPro(jsonArray.getJSONObject(j).getString("itemsNum"));
Double itemNumN= itemNumPro(jsonArray.getJSONObject(j+1).getString("itemsNum"));
if(itemNum>itemNumN){
JSONObject temp=jsonArray.getJSONObject(j);
jsonArray.set(j,jsonArray.getJSONObject(j+1));
jsonArray.set(j+1,temp);
f=true;
}
}
if(!f){break;}
}
//后处理
List<String> taskIdList = new ArrayList<>(Arrays.asList(taskIds.split(",")));
List<BusProcessNew> list = iBusProcessNewService.findNoExecuteBusProcessNewForEnd(taskIdList);
if (list.isEmpty()) {
return null;
}
BusProcessNew processNew = new BusProcessNew();
BeanUtils.copyProperties(list.get(0), processNew);
if(StringUtils.isNotBlank(pId)){
List<Task> list2 = taskService.createTaskQuery().processInstanceId(pId).active().list();
if(!list2.isEmpty()){
processNew.setNowTaskInfo(list2.get(0).getName());
}
}
JSONObject object3 = JSONObject.parseObject(list.get(0).getMesg());
JSONArray arr2 = new JSONArray();
object3.put("taskBreak", arr2);
object3.put("itemList",jsonArray);
processNew.setMesg(object3.toJSONString());
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",processNew.getId());
wrapper.eq("EXEC_TYPE",2);
wrapper.eq("EXEC_STATUS",0);
long count = oaTaskExecService.count(wrapper);
processNew.setCommitStatus(count);
return processNew;
}
/**
* 查询 taskIds项
* @param prcId
* @return
*/
@ApiOperation(value = "查询汇总项")
@GetMapping("/queryTaskIndex")
public BusProcessNew queryTaskIndex(String prcId,String taskIds) {
QueryWrapper<BusProcessNew> q=new QueryWrapper<>();
List<BusProcessNew> list = iBusProcessNewService.list(q.eq("P_ID", prcId));
if (list.size()>0) {
for (BusProcessNew bpn:list) {
if (bpn.getTaskId().equals(taskIds)) return bpn;
}
} else {
return null;
}
return null;
}
/**
* 查询草稿
*
@@ -1843,7 +2032,15 @@ public class TodoTaskController extends BaseAction {
return "0";
}
}else {
return "0";
QueryWrapper<BusProcessName> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("PRC_ID", pId);
queryWrapper2.isNotNull("OVER_TIME");
BusProcessName one = iBusProcessNameService.getOne(queryWrapper2);
if (null!=one){
return "1";
}else {
return "0";
}
}
} else {
return "1";
@@ -1917,19 +2114,32 @@ public class TodoTaskController extends BaseAction {
// }
// }
// }
String end = this.isEnd(busProcessName.getPrcId());
if(end.equals("0")){
ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
if(listUser.getData()!=null){
// List<String> qbgcs = new ArrayList<>();
for (OrgEO orgEO : listUser.getData()) {
assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
}
// String str= StringUtils.join(qbgcs, ",");
// assignee+=str;
}
}
// String end = this.isEnd(busProcessName.getPrcId());
// if(end.equals("0")){
// ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
// if(listUser.getData()!=null){
//// List<String> qbgcs = new ArrayList<>();
// for (OrgEO orgEO : listUser.getData()) {
// assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
// }
//// String str= StringUtils.join(qbgcs, ",");
//// assignee+=str;
// }
// }
}
// //获取新的流程名称·
// QueryWrapper<BusProcessNew> queryWrapper1=new QueryWrapper<>();
// queryWrapper1.eq("P_ID",busProcessName.getPrcId());
// queryWrapper1.eq("TASK_ID",task.getId());
// BusProcessNew busProcessNew=iBusProcessNewService.getOne(queryWrapper1);
// if (null!=busProcessNew) {
// if (null != busProcessNew.getPrcName()) {
// busProcessName.setPrcName(busProcessNew.getPrcName());
// } else {
// busProcessNew.setPrcName("");
// }
// }
}
}
if (assignee != null && !assignee.equals("")) {
@@ -2024,20 +2234,34 @@ public class TodoTaskController extends BaseAction {
assignee += ((byId.getData().getOrgName() != null && !byId.getData().getOrgName().equals("")) ? byId.getData().getOrgName() + "-" + byId.getData().getUname() : byId.getData().getUname()) + ",";
}
}
}else{
String end = this.isEnd(busProcessName.getPrcId());
if(end.equals("0")){
ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
if(listUser.getData()!=null){
}
else{
// String end = this.isEnd(busProcessName.getPrcId());
// if(end.equals("0")){
//// ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
// ResponseMessage<List<OrgEO>> listUser=new ResponseMessage<>();
// if(false){
// List<String> qbgcs = new ArrayList<>();
for (OrgEO orgEO : listUser.getData()) {
assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
}
// for (OrgEO orgEO : listUser.getData()) {
// assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
// }
// String str= StringUtils.join(qbgcs, ",");
// assignee+=str;
}
}
// }
// }
}
// //获取新的流程名称·
// QueryWrapper<BusProcessNew> queryWrapper1=new QueryWrapper<>();
// queryWrapper1.eq("P_ID",busProcessName.getPrcId());
// queryWrapper1.eq("TASK_ID",task.getId());
// BusProcessNew busProcessNew=iBusProcessNewService.getOne(queryWrapper1);
// if (null!=busProcessNew) {
// if (null != busProcessNew.getPrcName()) {
// busProcessName.setPrcName(busProcessNew.getPrcName());
// } else {
// busProcessNew.setPrcName("");
// }
// }
}
}
if (assignee != null && !assignee.equals("")) {
@@ -2124,24 +2348,24 @@ public class TodoTaskController extends BaseAction {
for (Task task : list2) {
if (task.getAssignee() != null && !task.getAssignee().equals("")) {
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(task.getAssignee());
if (byId.getData() != null) {
if (byId.getData() != null && byId.getData().getUname() != null) {
if (assignee.indexOf(byId.getData().getUname()) == -1) {
assignee += ((byId.getData().getOrgName() != null && !byId.getData().getOrgName().equals("")) ? byId.getData().getOrgName() + "-" + byId.getData().getUname() : byId.getData().getUname()) + ",";
}
}
}else{
String end = this.isEnd(busProcessName.getPrcId());
if(end.equals("0")){
ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
if(listUser.getData()!=null){
// List<String> qbgcs = new ArrayList<>();
for (OrgEO orgEO : listUser.getData()) {
assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
}
// String str= StringUtils.join(qbgcs, ",");
// assignee+=str;
}
}
// String end = this.isEnd(busProcessName.getPrcId());
// if(end.equals("0")){
// ResponseMessage<List<OrgEO>> listUser = lawsUserInfoService.getManagerByOrgIdNew("企业标准管理工程师");
// if(listUser.getData()!=null){
//// List<String> qbgcs = new ArrayList<>();
// for (OrgEO orgEO : listUser.getData()) {
// assignee+=orgEO.getRoleName()+"-"+orgEO.getUserName();
// }
//// String str= StringUtils.join(qbgcs, ",");
//// assignee+=str;
// }
// }
}
}
}
@@ -2233,7 +2457,34 @@ public class TodoTaskController extends BaseAction {
@ApiOperation(value = "强制撤回", notes = "强制撤回")
@GetMapping("/forceRecall")
public Wrapper<String> forceRecall(String prcId) {
List<Task> list2 = taskService.createTaskQuery().processInstanceId(prcId).active().list();
QueryWrapper<BusProcessName> wrapper=new QueryWrapper<>();
wrapper.eq("PRC_ID",prcId);
List<BusProcessName> busProcessNames=iBusProcessNameService.list(wrapper);
if (!busProcessNames.isEmpty()){
BusProcessName busProcessName=busProcessNames.get(0);
if ("3".equals(busProcessName.getPrcType())){
QueryWrapper<BusProcessNew> wrapper1=new QueryWrapper<>();
wrapper1.eq("P_ID",prcId).eq("TASK_INFO","起草");
List<BusProcessNew> list=iBusProcessNewService.list(wrapper1);
if (!list.isEmpty()){
JSONObject object=JSONObject.parseObject(list.get(0).getMesg());
lawsUserInfoService.deletePublicIdea(object.getString("uniques"));
}
}else if("buss1".equals(busProcessName.getPrcType()) || "buss2".equals(busProcessName.getPrcType())){
if(!list2.isEmpty() && "发布".equals(list2.get(0).getName())){
lawsUserInfoService.modSnByProcess(list2.get(0).getId());
}
}
}
runtimeService.deleteProcessInstance(prcId, "用户强制撤回");
if(StringUtils.isNotBlank(prcId)){
webServiceOAService.deleteOAByPid(prcId);
}
Map map = new HashMap();
map.put("P_ID", prcId);
iBusProcessNewService.removeByMap(map);
@@ -2447,6 +2698,19 @@ public class TodoTaskController extends BaseAction {
}
@ApiOperation(value = "删除草稿")
@PostMapping("/delCG")
public String delCG(@RequestParam("id") String id) {
List<String> strings=new ArrayList<>();
if (id.contains(",")){
strings.addAll(new ArrayList<>(Arrays.asList(id.split(","))));
}else {
strings.add(id);
}
return iBusProcessNameService.delDB(strings);
}
// @ApiOperation(value = "查询流程信息", notes = "根据流程流程编号查询名称等信息")
// @ApiImplicitParams({@ApiImplicitParam(name = "prcNum", value = "流程编号")})
// @PostMapping("/findProcessNameByPrcNum")
@@ -1,25 +1,34 @@
package com.ydw.bat.wkflow.business_auth;
import com.github.pagehelper.PageInfo;
import com.tmsps.fk.common.wrapper.Wrapper;
import com.ydw.bat.wkflow.business_main.datas.dto.*;
import com.ydw.bat.wkflow.business_main.datas.dto.WG.BusinessDeptIssue;
import com.ydw.bat.wkflow.business_main.datas.dto.WG.NewsFeed;
import com.ydw.bat.wkflow.business_main.datas.dto.WG.ProductDeptIssue;
import com.ydw.bat.wkflow.business_main.datas.dto.WG.WgWorkGroupShowDTO;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import feign.Headers;
import feign.Param;
import com.ydw.bat.wkflow.business_main.datas.entity.standState.ModelData;
import com.ydw.bat.wkflow.business_slrs.dao.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Component
@FeignClient(value = "LAWSSystem2",path="/api",url="")
//@FeignClient(value = "FotonLAWSSystem-qk",path="/api",url="")
//线上部署用
@FeignClient(value = "FotonLAWSSystem",path="/api",url="")
@RequestMapping("/")
public interface LawsUserInfoService {
@GetMapping("/sarBussStandSn/sar-buss-stand-sn/modSnByProcess")
public ResponseMessage<Object> modSnByProcess(@RequestParam("taskId") String taskId);
@GetMapping("sys/org/getManagerByOrgId")
public ResponseMessage<List<OrgEO>> getManagerByOrgId(@RequestParam("roleName") String currentUsrId, @RequestParam("orgId") String orgId);
@@ -28,7 +37,17 @@ public interface LawsUserInfoService {
/**
* 废止(企标复审)
* @param standCode
* @param
* @param page
* @return
*/
@PostMapping("/lawss/sarBussionessStandState/getSarBussionessStandStateProcessList")
public List<ModelData> getSarBussionessStandStateProcessList(SarBussionessStandStatePage page);
/**
* 废止(企标复审)
* @param
* @param standName
* @return
*/
@@ -84,4 +103,114 @@ public interface LawsUserInfoService {
@GetMapping("lawss/mail/sendMailByUserIdFeign")
public ResponseMessage sendEmail(@RequestParam("userId") String userId, @RequestParam("msg") String msg, @RequestParam("title") String title);
@PutMapping("sarLawsDetailedList/sar-laws-detailed-list/updateList")
public ResponseMessage updateLaws(@RequestBody DetailedUpDto addDetailedDto);
//合规评估流程
@PostMapping("sarStandUnqualified/sar-stand-unqualified/add")
public ResponseMessage addsarStandUnqualified(@RequestBody List<SarStandUnqualified> sarStandUnqualifieds);
@PostMapping("sarStandardComplianceAssessResult/add")
public ResponseMessage addProduct(@RequestBody List<SarStandardComplianceProductAssess> sarStandardComplianceProductAssesses);
@PostMapping(value = "sarLawsDetailedList/sar-laws-detailed-list/getStandById")
public SarLawsDetailedList getStandById(@RequestParam("id") String id);
@PostMapping("slrs/sar-public-idea/addSarPublicIdea")
public com.ydw.bat.wkflow.util.http.ResponseMessage addSarPublicIdea(@RequestBody SarPublicIdea sarPublicIdea);
@GetMapping("slrs/sar-public-idea-all/getAllStandById")
public List<SarPublicIdeaAll> getAllStandById(@RequestParam("ideaId") String ideaId);
@PostMapping("slrs/sar-public-idea-all/saveBatchByWk")
public com.ydw.bat.wkflow.util.http.ResponseMessage savePublicIdeaBatch(@RequestBody List<SarPublicIdeaAll> sarPublicIdea);
@PostMapping("/SarStandItems/sar-stand-items/saveBatch")
public String sarStandItemsSaveBatch(@RequestBody List<SarStandItems> sarStandItems);
@PostMapping("/sarStandardComplianceAssessResult/sar-interpretation-national-standard/saveBatch")
public String SarInterpretationNationalStandardSaveBatch(@RequestBody List<SarInterpretationNationalStandard> standards);
@PostMapping("/lawss/sarFileSplitInfo/updateSarFileSplitInfo")
public String updateSarFileSplitInfo(@RequestBody SarFileSplitInfoEO standards);
@PostMapping("/sarStandProjectLibrary/batchInsert")
public String batchInsert(@RequestBody List<StandProjectRelationDto> standProjectRelationDtos);
@PostMapping("/WgDept/saveBatch")
public String wgDeptSaveBatch(@RequestBody List<WgDept> wgdepts);
/**
* 日历显示会议日程--流程结束生成会议 (标准化活动,政策课题组)
* @param sapMeeting (id, title, type, ...) type: 1,标准化活动;2,政策课题组
* @return 是否插入成功 int
*/
@PostMapping("/sapMeetInfo/addMeeting")
int addMeeting(@RequestBody SapMeeting sapMeeting);
@GetMapping("/sapMeetInfo/getMeetingsByMonth")
public List<SapMeeting> getMeetingsByMonth(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date);
@GetMapping("/sapMeetInfo/getMeetingsByMonthType")
public List<SapMeeting> getMeetingsByMonthType(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date,@RequestParam("type") int type);
@GetMapping("/sapMeetInfo/getMeetingsByDate")
public List<SapMeeting> getMeetingsByDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date,@RequestParam("type") int type);
@GetMapping("/sapMeetInfo/getOneById")
public SapMeeting getOneById(@RequestParam("id") String id);
@PostMapping("/sapMeetInfo/getDateMeeting")
public int getDateMeeting(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date,@RequestParam("id") String id,@RequestParam("type") int type);
@PostMapping("/esRevisePlan/es-revise-plan/modPlanByWk")
public ResponseMessage<Object> modPlan(@RequestBody EsRevisePlanDTO esRevisePlan);
@PostMapping("/esRevisePlan/es-revise-plan/modPlanByProcess")
public ResponseMessage<Object> modStatePlan(@RequestBody EsRevisePlanDTO esRevisePlan);
@PostMapping("/esRevisePlan/es-revise-plan/addPlanByWk")
public ResponseMessage<Object> addPlan(@RequestBody EsRevisePlanDTO esRevisePlan);
@GetMapping("/esRevisePlan/es-revise-plan/delPlanByWk")
public ResponseMessage<Object> delPlan(@RequestParam("id") String id);
@GetMapping("/lawss/sarBussionessStand/updateSarBussionessStand")
public ResponseMessage<Object> updateSarBussionessStand(@RequestBody SarBussionessStand sarBussionessStandEO);
@GetMapping("/lawss/SarBussStandAttrInfo/getBussAttrInfo")
public Map<String,Object> getBussAttrInfo(@RequestParam("standId") String standId);
@PostMapping("/sarStandUnqualified/sar-stand-unqualified/updateBatch")
public ResponseMessage<Object> updateBatch(@RequestBody List<SarStandUnqualified> sarStandUnqualified);
@PostMapping("/wg_work_group/updateDataByWk")
public ResponseMessage<Object> wg_work_group_update(@RequestBody WgWorkGroupShowDTO wgWorkGroupShowDTO);
@GetMapping("/slrs/sar-public-idea/deletePublicIdea")
public ResponseMessage<Object> deletePublicIdea(@RequestParam("id") String id);
@PostMapping("/sarStandUnqualified/businessDeptIssue/saveBatch")
public ResponseMessage<Object> businessDeptIssueSaveBatch(@RequestBody List<BusinessDeptIssue> issue);
@RequestMapping(value = "/sarStandUnqualified/productDeptIssue/saveBatch",method = RequestMethod.POST)
public ResponseMessage productDeptIssue(@RequestBody List<ProductDeptIssue> issue);
@PostMapping(value = "/lawss/NewsFeed/insertNewsFeed")
public ResponseMessage<Object> insertNewsFeed(NewsFeed newsFeed);
@GetMapping("/esRevisePlan/es-revise-plan/getAllPlansByWk")
public List<EsRevisePlanDTO> getAllPlansByWk(@RequestParam("esName") String esName);
}
@@ -0,0 +1,53 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService;
import io.swagger.annotations.ApiOperation;
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;
import java.util.List;
import java.util.Map;
/**
* <p>
* 流程评分历史表 前端控制器
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@RestController
@RequestMapping("/busProcessEvaluation")
public class BusProcessEvaluationHisController {
@Autowired
private IBusProcessEvaluationHisService busProcessEvaluationHisService;
@GetMapping("/evaluationHisListRepSum")
public Map<String,Integer> evaluationHisListRepSum(String pid) {
return busProcessEvaluationHisService.evaluationHisListRepSum(pid);
}
@GetMapping("/evaluationHisListByOne")
public BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo) {
BusProcessEvaluationHis processEvaluationHis = busProcessEvaluationHisService.evaluationHisListByOne(pid,taskInfo);
return processEvaluationHis;
}
@GetMapping("/evaluationHisListRep")
public List<BusProcessEvaluationHis> evaluationHisListRep(String pid) {
List<BusProcessEvaluationHis> processEvaluationHis = busProcessEvaluationHisService.evaluationHisListRep(pid);
return processEvaluationHis;
}
@GetMapping("/evaluationHisList")
public List<BusProcessEvaluationHis> evaluationHisList(String pid) {
List<BusProcessEvaluationHis> processEvaluationHis = busProcessEvaluationHisService.evaluationHisList(pid);
return processEvaluationHis;
}
}
@@ -0,0 +1,236 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessModelHis;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessModelHisService;
import com.ydw.bat.wkflow.util.Utils;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import java.util.UUID;
/**
* <p>
* 流程模块历史表 前端控制器
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@RestController
@RequestMapping("/busProcessModel")
public class BusProcessModelHisController {
private static final Logger logger = LoggerFactory.getLogger(BusProcessModelHisController.class);
@Value("${buss.edit.file.path}")
private String standEditFilePath;//文件存储路径
@Autowired
private IBusProcessModelHisService busProcessModelHisService;
@ApiOperation(value = "|onlyOffice接收文件")
@PostMapping("/recieveFile")
public void recieveFile(HttpServletRequest request, HttpServletResponse response, String fileNm, String standNo, String fileId){
logger.info("**********进入onlyoffice接收文档接口************");
try {
PrintWriter writer = response.getWriter();
String body = "";
try {
Scanner scanner = new Scanner(request.getInputStream());
scanner.useDelimiter("\\A");
body = scanner.hasNext() ? scanner.next() : "";
scanner.close();
} catch (Exception ex) {
writer.write("get request.getInputStream error:" + ex.getMessage());
return;
}
if (body.isEmpty()) {
writer.write("empty request.getInputStream");
return;
}
net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body);
logger.info("**********onlyoffice接收文档接口获得结果body************" + body);
int status = (Integer) jsonObj.get("status");
int saved = 0;
if (status == 2 || status == 3)//MustSave, Corrupted
{
String downloadUri = (String) jsonObj.get("url");
try {
logger.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri);
if (StringUtils.isNotEmpty(downloadUri)) {
StringBuilder builder=new StringBuilder();
builder.append(standEditFilePath);
builder.append(standNo).append("/");
builder.append(fileNm);
String saveFileUrl = builder.toString();
File file = new File(saveFileUrl);
downloadNetFile(downloadUri, file);
// 更新在线编辑当前节点编辑状态
busProcessModelHisService.modelHisOneUpdStatusById(fileId);
}
} catch (Exception ex) {
saved = 1;
logger.info("**********onlyoffice接收文档接口异常************" + ex.getMessage());
logger.error(ex.getMessage(),ex);
}
} else if (status == 4) {
logger.info("**********onlyoffice接收文档接口开始修改文件状态状态4************");
logger.info("**********onlyoffice接收文档接口修改文件状态成功状态4************");
}
logger.info("onlyoffice编辑完成--------------");
writer.write("{\"error\":" + saved + "}");
} catch (IOException e) {
logger.info("**********onlyoffice接收文档接口异常************" + e.getMessage());
logger.error(e.getMessage(),e);
return;
}
}
@ApiOperation(value = "|onlyOffice接收文件")
@PostMapping("/recieveFileBefore")
public void recieveFileBefore(HttpServletRequest request, HttpServletResponse response, String fileNm, String standNo, String pid, String taskId){
logger.info("**********进入onlyoffice接收文档接口************");
try {
PrintWriter writer = response.getWriter();
String body = "";
try {
Scanner scanner = new Scanner(request.getInputStream());
scanner.useDelimiter("\\A");
body = scanner.hasNext() ? scanner.next() : "";
scanner.close();
} catch (Exception ex) {
writer.write("get request.getInputStream error:" + ex.getMessage());
return;
}
if (body.isEmpty()) {
writer.write("empty request.getInputStream");
return;
}
net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body);
logger.info("**********onlyoffice接收文档接口获得结果body************" + body);
int status = (Integer) jsonObj.get("status");
int saved = 0;
if (status == 2 || status == 3)//MustSave, Corrupted
{
String downloadUri = (String) jsonObj.get("url");
try {
logger.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri);
if (StringUtils.isNotEmpty(downloadUri)) {
StringBuilder builder=new StringBuilder();
builder.append(standEditFilePath);
builder.append(standNo).append("/");
builder.append(fileNm);
String saveFileUrl = builder.toString();
File file = new File(saveFileUrl);
downloadNetFile(downloadUri, file);
// 更新在线编辑当前节点编辑状态
busProcessModelHisService.modelHisOneUpdStatus(pid,taskId);
}
} catch (Exception ex) {
saved = 1;
logger.info("**********onlyoffice接收文档接口异常************" + ex.getMessage());
logger.error(ex.getMessage(),ex);
}
} else if (status == 4) {
logger.info("**********onlyoffice接收文档接口开始修改文件状态状态4************");
logger.info("**********onlyoffice接收文档接口修改文件状态成功状态4************");
}
logger.info("onlyoffice编辑完成--------------");
writer.write("{\"error\":" + saved + "}");
} catch (IOException e) {
logger.info("**********onlyoffice接收文档接口异常************" + e.getMessage());
logger.error(e.getMessage(),e);
return;
}
}
public void downloadNetFile(String downloadUrl, File file) {
try {
FileOutputStream fileOutputStream = new FileOutputStream(file);
URL url = new URL(downloadUrl);
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
int length = 0;
byte[] bytes = new byte[1024];
while ((length = inputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes, 0, length);
}
fileOutputStream.close();
inputStream.close();
} catch (IOException e) {
logger.error("download error ! url :{}, exception:{}", downloadUrl, e);
}
}
@GetMapping("/processEditFile")
public BusProcessModelHis processEditFile(String id) {
BusProcessModelHis modelHisOne = busProcessModelHisService.processEditFile(id);
return modelHisOne;
}
@ApiOperation(value = "|model| 传入 模板文档名称(不带后缀)默认 docx")
@GetMapping("/saveEditFile")
public BusProcessModelHis saveEditFile(String model) {
return busProcessModelHisService.saveEditFile(model);
}
@GetMapping("/processModelHisOneUpdStatus")
public BusProcessModelHis modelHisOneUpdStatus(String pid,String taskId) {
BusProcessModelHis modelHisOne = busProcessModelHisService.modelHisOneUpdStatus(pid,taskId);
return modelHisOne;
}
@GetMapping("/processModelHisOneCount")
public BusProcessModelHis modelHisOneCount(String pid) {
BusProcessModelHis modelHisOne = busProcessModelHisService.modelHisOneCount(pid);
return modelHisOne;
}
@GetMapping("/processModelHisOne")
public BusProcessModelHis modelHisOne(String pid,String taskId) {
BusProcessModelHis modelHisOne = busProcessModelHisService.modelHisOne(pid,taskId);
return modelHisOne;
}
@GetMapping("/processModelHisList")
public List<BusProcessModelHis> evaluationHisList(String pid) {
List<BusProcessModelHis> processModelHisList = busProcessModelHisService.modelHisList(pid);
return processModelHisList;
}
}
@@ -47,5 +47,20 @@ public class BusProcessNewController extends BaseAction {
return findtodotask;
}
@ApiOperation(value = "每天十点需要启动 政策课题后续流程")
@GetMapping("/everyDayTenOlock")
public List<BusProcessNew> everyDayTenOlock() {
List<BusProcessNew> findtodotask = iBusProcessNewService.everyDayTenOlock();
return findtodotask;
}
@ApiOperation(value = "每天十点需要启动 标准化活动参会流程")
@GetMapping("/everyDayTenOlockSAM")
public List<BusProcessNew> everyDayTenOlockSAM() {
List<BusProcessNew> findtodotask = iBusProcessNewService.everyDayTenOlockSAM();
return findtodotask;
}
}
@@ -0,0 +1,119 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation;
import com.ydw.bat.wkflow.business_main.datas.entity.EsRevisePlanDTO;
import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;
@Api(description = "管控流程接受任务")
@RestController
@RequestMapping("/esPrcRelation")
public class EsPrcRelationController {
private static final Logger logger = LoggerFactory.getLogger(EsPrcRelationController.class);
@Value("${oa.flag}")
private Boolean OAFlag;
@Autowired
private TaskService taskService;
@Autowired
private IEsPrcRelationService esPrcRelationService;
@Autowired
private WebServiceOAService webServiceOAService;
@ApiOperation(value = "接受任务")
@GetMapping("/acceptTask")
public Integer acceptTack(String nowEsId, String oaFlag, String taskId) {
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if(task!=null) {
//发送OA已办
try {
if (OAFlag) {
//发送OA已办
webServiceOAService.completeOA(task);
}
} catch (Exception e) {
logger.error(e.toString());
}
}
return esPrcRelationService.modifyEsPrcRelation(nowEsId, null, oaFlag, null);
}
@ApiOperation(value = "判断是否已经接受任务")
@GetMapping("/judgeAcceptTask")
public Boolean judgeAcceptTask(String nowEsId, String oaFlag, String prcIdGk) {
EsPrcRelation esPrcRelation = new EsPrcRelation();
esPrcRelation.setEsId(nowEsId);
esPrcRelation.setOaFlag(oaFlag);
esPrcRelation.setPrcIdGk(prcIdGk);
return esPrcRelationService.listJudge(esPrcRelation);
}
@ApiOperation(value = "定时任务调试")
@GetMapping("/testAcceptTack")
public String testAcceptTack() {
LawsUserInfoService lawsUserInfoService = SpringContextUtil.getBean(LawsUserInfoService.class);
IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class);
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
List<EsRevisePlanDTO> esRevisePlanDTOList = lawsUserInfoService.getAllPlansByWk(null); // 查询 制定中,修订中的企标计划
// 计划标准初稿时间前一个月的企标计划
SimpleDateFormat sdfQuery = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
String endDate = sdfQuery.format(calendar.getTime());
List<EsRevisePlanDTO> esRevisePlanDTOList2 = esRevisePlanDTOList.stream()
.filter(e -> !ObjectUtils.isEmpty(e.getDraftTime()) && endDate.equals(sdfQuery.format(e.getDraftTime())))
.collect(Collectors.toList());
if (!esRevisePlanDTOList2.isEmpty()) {
for (EsRevisePlanDTO esRevisePlanDTO : esRevisePlanDTOList2) {
List<EsPrcRelation> esPrcRelationList = esPrcRelationService.list(esRevisePlanDTO.getId());
if (esPrcRelationList.isEmpty()) {
continue;
}
String esId = esPrcRelationList.get(0).getEsId();
String prcIdGk = esPrcRelationList.get(0).getPrcIdGk();
String oaFlag = esPrcRelationList.get(0).getOaFlag();
// 判断对应 管控流程是否还在 技术标准起草节点, 且之前点过接受任务
if (StringUtils.isNotBlank(prcIdGk)) {
List<Task> list2 = taskService.createTaskQuery().processInstanceId(prcIdGk).active().list();
if (!list2.isEmpty()) {
String nowTaskInfo = list2.get(0).getName();
if ("技术标准起草".equals(nowTaskInfo) && "0".equals(oaFlag)) {
// 再次发送待办
logger.info("============再次发送待办,企标计划" + esRevisePlanDTO.getEsName() +"===========");
// sendOATodo(list2.get(0));
// 更新 状态为待办
esPrcRelationService.modifyEsPrcRelation(esId, null, "1", null);
}
}
}
}
}
return "定时任务完成";
}
}
@@ -0,0 +1,48 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.EsTechRelation;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_main.datas.service.IEsTechRelationService;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.util.SpringContextUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/esTechRelation")
public class EsTechRelationController {
private static final Logger logger = LoggerFactory.getLogger(EsPrcRelationController.class);
@Autowired
private IEsTechRelationService esTechRelationService;
@PostMapping("/setRelation")
public void setRelation(String esPlanId, String prcId, String finish) {
EsTechRelation esTechRelation = new EsTechRelation();
esTechRelation.setEsId(esPlanId);
esTechRelation.setPrcId(prcId);
esTechRelation.setFinish(finish);
esTechRelationService.save(esTechRelation);
}
@GetMapping("/getEsByWk")
public String getEsByWk(String prcId) {
QueryWrapper<EsTechRelation> esTechRelationQueryWrapper = new QueryWrapper<>();
esTechRelationQueryWrapper.eq("prc_id", prcId);
List<EsTechRelation> list = esTechRelationService.list(esTechRelationQueryWrapper);
if (list!=null&&list.size()>0) {
return list.get(0).getEsId();
}
return null;
}
}
@@ -0,0 +1,44 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import io.swagger.annotations.ApiOperation;
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;
import java.util.Map;
/**
* <p>
* OA 干活任务执行表 前端控制器
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@RestController
@RequestMapping("/oaTaskExec")
public class OaTaskExecController {
@Autowired
private IOaTaskExecService oaTaskExecService;
@ApiOperation(value = "查询历史")
@GetMapping("/queryEndTime")
public String queryEndTime(String pId) {
String endTime = oaTaskExecService.endTime(pId);
return endTime;
}
@ApiOperation(value = "接受任务")
@GetMapping("/execTask")
public Map<String,Object> execTask(String todoId) {
Map<String,Object> map = oaTaskExecService.execTask(todoId);
return map;
}
}
@@ -0,0 +1,21 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* OA日志表 前端控制器
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@RestController
@RequestMapping("/sendTodoLog")
public class SendTodoLogController {
}
@@ -0,0 +1,94 @@
package com.ydw.bat.wkflow.business_main.datas.controller;
import com.ydw.bat.wkflow.business_main.datas.entity.TbTask;
import com.ydw.bat.wkflow.business_main.datas.service.ITbTaskService;
import com.ydw.bat.wkflow.config.SchedulerConf;
import io.swagger.annotations.Api;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 动态定时任务表 前端控制器
* </p>
*
* @author super_liu
* @since 2022-05-27
*/
@RestController
@Api(tags = "动态定时任务表")
@RequestMapping("/tsTask")
public class TbTaskController{
@Autowired
private SchedulerConf schedulerConf;
@Autowired
private ITbTaskService iTbTaskService;
/**
* 启动一个动态定时任务
* http://localhost:10085/tbTask/start/2
*/
@GetMapping("start/{taskId}")
public String start(@PathVariable("taskId") String taskId){
schedulerConf.start(taskId);
return "操作成功";
}
/**
* 停止一个动态定时任务
* http://localhost:10085/tbTask/stop/2
*/
@GetMapping("stop/{taskId}")
public String stop(@PathVariable("taskId") String taskId){
schedulerConf.stop(taskId);
return "操作成功";
}
/**
* 更新一个动态定时任务
* http://localhost:10085/tbTask/save?taskId=2&taskExp=0/2 * * * * ?&taskClass=cn.huanzi.qch.springboottimer.task.MyRunnable3
*/
@PostMapping("save")
public String save(TbTask task) throws IllegalAccessException {
//先更新表数据
TbTask tbTask = iTbTaskService.getById(task.getId());
//null值忽略
List<String> ignoreProperties = new ArrayList<>(7);
//反射获取Class的属性(Field表示类中的成员变量)
for (Field field : task.getClass().getDeclaredFields()) {
//获取授权
field.setAccessible(true);
//属性名称
String fieldName = field.getName();
//属性的值
Object fieldValue = field.get(task);
//找出值为空的属性,我们复制的时候不进行赋值
if(null == fieldValue){
ignoreProperties.add(fieldName);
}
}
//org.springframework.beans BeanUtils.copyProperties(A,B)A中的值付给B
BeanUtils.copyProperties(task, tbTask,ignoreProperties.toArray(new String[0]));
iTbTaskService.updateById(tbTask);
schedulerConf.tasks.clear();
//停止旧任务
schedulerConf.stop(tbTask.getId());
//重新启动
schedulerConf.start(tbTask.getId());
return "操作成功";
}
}
@@ -0,0 +1,45 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* //TODO 添加类、接口描述
*
* @author ZhangZhiYuan
* @date 2021-06-24
*/
@Data
public class AddDetailedDto {
@ApiModelProperty(value = "国家或地区")
private String countryArea;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "清单类别")
private String detailedList;
@ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3")
private String sortKey;
@ApiModelProperty(value = "清单名称")
private String detailedListName;
@ApiModelProperty(value = "清单详情")
private String remark;
@ApiModelProperty(value = "清单状态,1为未发布,2为发布")
private String detailedListState;
@ApiModelProperty(value = "适用领域")
private String applicationScope;
@ApiModelProperty(value = "更新人")
private String updatePeople;
@ApiModelProperty(value = "上传的附件")
private MultipartFile[] files;
@ApiModelProperty(value = "要添加的清单id")
private String[] lawsIds;
public MultipartFile getFiles(int i) {
return files[i];
}
}
@@ -0,0 +1,96 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* Auto-generated: 2021-07-09 16:11:32
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class BreakdownList {
private String id;
private String svpps;
private String standId;
private String itemsNum;
private String claimType;
private String itemsName;
private String applyArctic;
private String busStandCover;
private String responsibleUnit;
private String responsibleEngineer;
private String technicalRequir;
private String changePoint;
private String xcxssrq;
private String zccssrq;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setSvpps(String svpps) {
this.svpps = svpps;
}
public String getSvpps() {
return svpps;
}
public void setStandId(String standId) {
this.standId = standId;
}
public String getStandId() {
return standId;
}
public void setItemsNum(String itemsNum) {
this.itemsNum = itemsNum;
}
public String getItemsNum() {
return itemsNum;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getClaimType() {
return claimType;
}
public void setItemsName(String itemsName) {
this.itemsName = itemsName;
}
public String getItemsName() {
return itemsName;
}
public void setApplyArctic(String applyArctic) {
this.applyArctic = applyArctic;
}
public String getApplyArctic() {
return applyArctic;
}
public void setBusStandCover(String busStandCover) {
this.busStandCover = busStandCover;
}
public String getBusStandCover() {
return busStandCover;
}
public void setResponsibleUnit(String responsibleUnit) {
this.responsibleUnit = responsibleUnit;
}
public String getResponsibleUnit() {
return responsibleUnit;
}
}
@@ -0,0 +1,77 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* Auto-generated: 2021-07-09 16:11:32
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class DataList {
private String uname;
private String productLine;
private String distributePerson;
private String distributePersonId;
private String projectManager;
//合规评估添加的数据
private String itemNum;
private String xCXSSRQ;
private String zCCSSRQ;
private String itemsName;
private String standName;
private String implementer;
private String projectName;
private String standNumber;
private String noCompliance;
private String implementerId;
private String projectNumber;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date completionTime;
private String zcNoCompliance;
private String countermeasures;
private String qualityEngineer;
private String responsibleUnit;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date zcCompletionTime;
private String certifiedEngineer;
private String complianceReasons;
private String zcCountermeasures;
private String responsibleEngineer;
private String zcComplianceReasons;
private String technicalRequir;
private String changePoint;
private List<SarStandProjectLibraries> sarStandProjectLibraries;
public void setUname(String uname) {
this.uname = uname;
}
public String getUname() {
return uname;
}
public void setProductLine(String productLine) {
this.productLine = productLine;
}
public String getProductLine() {
return productLine;
}
public void setSarStandProjectLibraries(List<SarStandProjectLibraries> sarStandProjectLibraries) {
this.sarStandProjectLibraries = sarStandProjectLibraries;
}
public List<SarStandProjectLibraries> getSarStandProjectLibraries() {
return sarStandProjectLibraries;
}
}
@@ -0,0 +1,69 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* //TODO 添加类、接口描述
*
* @author ZhangZhiYuan
* @date 2021-06-25
*/
@Data
public class DetailedUpDto {
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "国家或地区")
private String countryArea;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "清单类别")
private String detailedList;
@ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3")
private String sortKey;
@ApiModelProperty(value = "清单名称")
private String detailedListName;
@ApiModelProperty(value = "清单状态,1为未发布,2为发布")
private String detailedListState;
@ApiModelProperty(value = "清单版本,默认V0")
private String detailedListVision;
@ApiModelProperty(value = "适用领域")
private String applicationScope;
@ApiModelProperty(value = "附件id")
private String fileIds;
@ApiModelProperty(value = "更新时间")
private Date reNewTime;
@ApiModelProperty(value = "更新人")
private String reNewPeople;
@ApiModelProperty(value = "要添加的清单id")
private String inforlist;
@ApiModelProperty(value = "清单详情")
private String remark;
@ApiModelProperty(value = "实施时间")
private String inforlist1;
@ApiModelProperty(value = "在产车实施时间")
private String inforlist2;
@ApiModelProperty(value = "新车型实施时间")
private String inforlist3;
}
@@ -0,0 +1,31 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto.PCA;
import lombok.Data;
import java.util.Date;
/**
* Auto-generated: 2021-07-22 18:56:38
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class PCAbreakdownList {
private String id;
private String svpps;
private String standId;
private String xcxssrq;
private String zccssrq;
private String itemsNum;
private String claimType;
private String itemsName;
private String applyArctic;
private String busStandCover;
private String responsibleUnit;
private String responsibleEngineer;
private String productLine;
}
@@ -0,0 +1,36 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto.PCA;
import lombok.Data;
import java.util.Date;
/**
* Auto-generated: 2021-07-27 14:7:5
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class PCAchildren {
private String id;
private String key;
private String standId;
private String itemsNum;
private String itemsName;
private String workPeople;
private String workPeopleId;
private String noCompliance;
private String zcNoCompliance;
private String complianceReasons;
private String countermeasures;
private String zcCountermeasures;
private Date zcCompletionTime;
private Date completionTime;
private String zcComplianceReasons;
private String typeId;
private String xcxssrq;
private String zccssrq;
}
@@ -0,0 +1,56 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto.PCA;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* Auto-generated: 2021-07-22 18:56:38
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class PCAdataList {
private String ssrq;
private String zrbm;
private String standId;
private String productLineId;
private String productId;
private String productName;
private String standType;
private String standSort;
private String standNumber;
private String standYear;
private String cycvppsbm;
private String cycvppscn;
private String kccvppsbm;
private String kccvppscn;
private String standName;
private String xcxssrq;
private String zccssrq;
private String standEnName;
private String liablePeople;
private String liablePeopleId;
private String workPeople;
private String workPeopleId;
private List<PCAchildren> children;
private String noCompliance;
private String zcNoCompliance;
private String complianceReasons;
private String countermeasures;
private String zcCountermeasures;
private Date zcCompletionTime;
private Date completionTime;
private String zcComplianceReasons;
private String itemNum;
private String itemsName;
private String typeId;
}
@@ -0,0 +1,41 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto.PCA;
import lombok.Data;
import java.util.List;
/**
* Auto-generated: 2021-07-22 18:56:38
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class PCAtotal {
private String BZFlag;
private String jgUser;
private List<PCAdataList> dataList;
private String jgUserId;
private String startUser;
private List<String> taskBreak;
private String commentText;
private String projectName;
private List<PCAbreakdownList> breakdownList;
private String prcCreateUser;
private String projectNumber;
private String projectLine;
private String productLine;
private String startUserName;
private String serviceManager;
private String statuteMinister;
private String prcCreateUserName;
private String engineeringManager;
private String serviceManagerName;
private String statuteMinisterName;
private String engineeringManagerName;
private String bZFlag;
private List<PCAchildren> children;
}
@@ -0,0 +1,134 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class PEPDTO {
private String id;
private List<DataList> dataList;
private SarStandProjectLibraries sarStandProjectLibraries;
private String jlUserId;
private String passFlag;
private String zrUserId;
private String standName;
private String standNumber;
private List<BreakdownList> breakdownList;
private String prcCreateUser;
private String applyUpdUserId;
private String approvalOpinion;
private String qualityEngineer;
private String qualityEngineerName;
private String certifiedEngineer;
private String certifiedEngineerName;
private String prcCreateUserName;
//返回分发责任人
private String distributePerson;
private String distributePersonId;
private String uname;
private String projectManager;
//责任人 (对应到每条数据一个责任人)
private String workPeople;
//在研在产字段!!! 待定中 下发落实人需要使用
//时间字段
private String ZCCSSRQ;
private String XCXSSRQ;
private String commentText;
private List<Step3DTO> step3DTOS;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setDataList(List<DataList> dataList) {
this.dataList = dataList;
}
public List<DataList> getDataList() {
return dataList;
}
public void setJlUserId(String jlUserId) {
this.jlUserId = jlUserId;
}
public String getJlUserId() {
return jlUserId;
}
public void setZrUserId(String zrUserId) {
this.zrUserId = zrUserId;
}
public String getZrUserId() {
return zrUserId;
}
public void setStandName(String standName) {
this.standName = standName;
}
public String getStandName() {
return standName;
}
public void setStandNumber(String standNumber) {
this.standNumber = standNumber;
}
public String getStandNumber() {
return standNumber;
}
public void setBreakdownList(List<BreakdownList> breakdownList) {
this.breakdownList = breakdownList;
}
public List<BreakdownList> getBreakdownList() {
return breakdownList;
}
public void setPrcCreateUser(String prcCreateUser) {
this.prcCreateUser = prcCreateUser;
}
public String getPrcCreateUser() {
return prcCreateUser;
}
public void setApplyUpdUserId(String applyUpdUserId) {
this.applyUpdUserId = applyUpdUserId;
}
public String getApplyUpdUserId() {
return applyUpdUserId;
}
public void setApprovalOpinion(String approvalOpinion) {
this.approvalOpinion = approvalOpinion;
}
public String getApprovalOpinion() {
return approvalOpinion;
}
public void setQualityEngineer(String qualityEngineer) {
this.qualityEngineer = qualityEngineer;
}
public String getQualityEngineer() {
return qualityEngineer;
}
public void setCertifiedEngineer(String certifiedEngineer) {
this.certifiedEngineer = certifiedEngineer;
}
public String getCertifiedEngineer() {
return certifiedEngineer;
}
public void setPrcCreateUserName(String prcCreateUserName) {
this.prcCreateUserName = prcCreateUserName;
}
public String getPrcCreateUserName() {
return prcCreateUserName;
}
}
@@ -0,0 +1,14 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import lombok.Data;
import java.util.List;
@Data
public class PEPres {
private List<PEPDTO> pepdtos;
private List<Step3DTO> step3DTOS;
}
@@ -0,0 +1,71 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author szc
* @since 2021-06-15
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value="SarLawsDetailedList对象", description="")
public class SarLawsDetailedList {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId("id")
private String id;
@ApiModelProperty(value = "国家或地区")
private String countryArea;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "清单类别")
private String detailedList;
@ApiModelProperty(value = "区分,国家地区为1,项目名称为2,清单类别为3")
private String sortKey;
@ApiModelProperty(value = "清单名称")
private String detailedListName;
@ApiModelProperty(value = "清单状态,1为未发布,2为发布")
private String detailedListState;
@ApiModelProperty(value = "清单版本,默认V0")
private String detailedListVision;
@ApiModelProperty(value = "适用领域")
private String applicationScope;
@ApiModelProperty(value = "清单列表")
private String remark;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "更新人")
private String updatePeople;
@ApiModelProperty(value = "附件id")
private String fileId;
}
@@ -0,0 +1,127 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto;
import java.util.Date;
/**
* Auto-generated: 2021-07-09 16:11:32
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class SarStandProjectLibraries {
private String id;
private String uname;
private String currentNode;
private String productLine;
private String projectName;
private String projectGroup;
private String projectLevel;
private String projectNumber;
private String projectStatus;
private Date projectEndDate;
private String projectManager;
private String projectPlatfor;
private Date projectStartDate;
private String projectClassification;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUname() {
return uname;
}
public void setCurrentNode(String currentNode) {
this.currentNode = currentNode;
}
public String getCurrentNode() {
return currentNode;
}
public void setProductLine(String productLine) {
this.productLine = productLine;
}
public String getProductLine() {
return productLine;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getProjectName() {
return projectName;
}
public void setProjectGroup(String projectGroup) {
this.projectGroup = projectGroup;
}
public String getProjectGroup() {
return projectGroup;
}
public void setProjectLevel(String projectLevel) {
this.projectLevel = projectLevel;
}
public String getProjectLevel() {
return projectLevel;
}
public void setProjectNumber(String projectNumber) {
this.projectNumber = projectNumber;
}
public String getProjectNumber() {
return projectNumber;
}
public void setProjectStatus(String projectStatus) {
this.projectStatus = projectStatus;
}
public String getProjectStatus() {
return projectStatus;
}
public void setProjectEndDate(Date projectEndDate) {
this.projectEndDate = projectEndDate;
}
public Date getProjectEndDate() {
return projectEndDate;
}
public void setProjectManager(String projectManager) {
this.projectManager = projectManager;
}
public String getProjectManager() {
return projectManager;
}
public void setProjectPlatfor(String projectPlatfor) {
this.projectPlatfor = projectPlatfor;
}
public String getProjectPlatfor() {
return projectPlatfor;
}
public void setProjectStartDate(Date projectStartDate) {
this.projectStartDate = projectStartDate;
}
public Date getProjectStartDate() {
return projectStartDate;
}
public void setProjectClassification(String projectClassification) {
this.projectClassification = projectClassification;
}
public String getProjectClassification() {
return projectClassification;
}
}
@@ -0,0 +1,107 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Timestamp;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author super_liu
* @since 2021-06-15
*/
@Data
@Accessors(chain = true)
@ApiModel(value="SarStandUnqualified对象", description="")
public class SarStandUnqualified {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "产品线编号")
private String productId;
@ApiModelProperty(value = "标准ID")
private String standId;
@ApiModelProperty(value = "标准号")
@TableField("STAND_SERIAL_NUMBER")
private String standSerialNumber;
@ApiModelProperty(value = "标准名称")
private String standName;
@ApiModelProperty(value = "条款号")
private String itemsNum;
@ApiModelProperty(value = "条款名称")
private String itemsName;
@ApiModelProperty(value = "产品线")
@TableField("PRODUCT_LINE")
private String productLine;
@ApiModelProperty(value = "责任部门")
private String responsibleUnit;
@ApiModelProperty(value = "项目名称")
private String productName;
@ApiModelProperty(value = "创建部门")
private String createDeptId;
@ApiModelProperty(value = "创建人")
private String createById;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty(value = "关闭状态(1为开启,2为关闭)")
@TableField("CLOSE_STATE")
private Integer closeState;
@ApiModelProperty(value = "实际关闭时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date actualCloseTime;
@ApiModelProperty(value = "计划关闭时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date planCloseTime;
@ApiModelProperty(value = "未符合原因")
private String reason;
@ApiModelProperty(value = "质量工程师")
@TableField("QA_ENGINEER")
private String qaEngineer;
@ApiModelProperty(value = "认证工程师")
@TableField("AUTH_ENGINEER")
private String authEngineer;
@ApiModelProperty(value = "责任工程师")
@TableField("DUTY_ENGINEER")
private String dutyEngineer;
// @ApiModelProperty(value = "产品类型(research为在研产品,product为在产产品)")
// private String productType;
@ApiModelProperty(value = "主键")
private String id;
}
@@ -0,0 +1,137 @@
package com.ydw.bat.wkflow.business_main.datas.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author zyl
* @since 2021-06-18
*/
@Data
@Accessors(chain = true)
@ApiModel(value="SarStandardComplianceProductAssess对象", description="")
public class SarStandardComplianceProductAssess {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "'产品线'")
private String productLineId;
@ApiModelProperty(value = "'项目id'")
private String productId;
@ApiModelProperty(value = "'项目名称'")
private String productName;
@ApiModelProperty(value = "标准ID")
@TableField("STAND_ID")
private String standId;
@ApiModelProperty(value = "标准编号")
@TableField("STAND_NUMBER")
private String standNumber;
@ApiModelProperty(value = "'标准名称'")
@TableField("STAND_NAME")
private String standName;
@ApiModelProperty(value = "'标准章条'")
private String standardItem;
@ApiModelProperty(value = "标准类型")
@TableField("STAND_TYPE")
private String standType;
@ApiModelProperty(value = "标准主要内容")
private String standardInfo;
@ApiModelProperty(value = "1是在产,0是在研")
private Integer productType;
@ApiModelProperty(value = "在研产品实施时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date researchImplementationTime;
@ApiModelProperty(value = "在研产品合规信息")
private String researchCompliance;
@ApiModelProperty(value = "在研产品不合规项目")
private String researchNonCompliance;
@ApiModelProperty(value = "在研产品不合规应对措施")
private String researchCountermeasures;
@ApiModelProperty(value = "在研产品不合规完成时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date researchCompletionTime;
@ApiModelProperty(value = "在产产品实施时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date productionImplementationTime;
@ApiModelProperty(value = "在产产品合规信息")
private String productionCompliance;
@ApiModelProperty(value = "在产产品不合规信息")
@TableField("production_non_compliance")
private String productionNonCompliance;
@ApiModelProperty(value = "在产产品不合规应对措施")
private String productionCountermeasures;
@ApiModelProperty(value = "在产产品不合规完成时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date productionCompletionTime;
@ApiModelProperty(value = "审查状态")
@TableField("INTERPRETATION_STATE")
private String interpretationState;
@ApiModelProperty(value = "审查时间")
@TableField("INTERPRETATION_TIME")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date interpretationTime;
@ApiModelProperty(value = "条款名称")
@TableField("clause_name")
private String clauseName;
@ApiModelProperty(value = "流程UUID")
@TableField("type")
private String type;
@ApiModelProperty(value = "评估时间")
@TableField("evaluation_time")
private String evaluationTime;
@ApiModelProperty(value = "评估人")
@TableField("evaluation_people")
private String evaluationPeople;
@ApiModelProperty(value = "评估人")
@TableField("evaluation_people_name")
private String evaluationPeopleName;
@ApiModelProperty(value = "不涉及理由")
@TableField("no_involve")
private String noInvolve;
}
@@ -0,0 +1,47 @@
/**
* Copyright 2021 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.dto;
import lombok.Data;
/**
* Auto-generated: 2021-07-12 17:52:47
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class Step3DTO {
private String id;
private String uname;
private String itemNum;
private String itemsName;
private String standName;
private String implementer;
private String productLine;
private String projectName;
private String standNumber;
private String implementerId;
private String projectNumber;
private String projectManager;
private String qualityEngineer;
private String qualityEngineerName;
private String qaEngineer;
private String distributePerson;
private String certifiedEngineer;
private String certifiedEngineerName;
private String authEngineer;
private String distributePersonId;
private String zCCSSRQ;
private String xCXSSRQ;
private String responsibleUnit;
private String responsibleEngineer;
private String dutyEngineer;
private String standId;
private String standardInfo;
private String typeId;
private String technicalRequir;
private String changePoint;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class BusinessDeptIssue implements Serializable {
@TableId(value = "id", type = IdType.UUID)
private String id;
@TableField("law_id")
private String lawId;
@TableField(exist = false)
private String lawNumber;
@TableField(exist = false)
private String lawName;
@TableField("product_type")
private String productType;
@TableField("impl_time")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd")
private Date implTime;
@TableField("impl_require")
private String implRequire;
@TableField("conform_situation")
private String conformSituation;
@TableField("dev_scheme")
private String devScheme;
@TableField("sop_time")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd")
private Date sopTime;
@TableField("complete_situation")
private String completeSituation;
@TableField("timeout_situation")
private String timeoutSituation;
@TableLogic(value = "0", delval = "1")
@TableField("del_flag")
private String delFlag;
@TableField("response_dept")
private String responseDept;
@TableField("response_people")
private String responsePeople;
@TableField("is_close")
private String isClose;
@TableField("is_risk")
private String isRisk;
}
@@ -0,0 +1,65 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @Author: qk
* @Date: 2022/5/23 0023 14:47
* @Version 1.0
*/
@Data
@Accessors(chain = true)
@ApiModel(value="NewsFeed对象", description="")
public class NewsFeed {
private static final long serialVersionUID = 1L;
@TableId
@ApiModelProperty(value = "主键")
private String id;
@TableField("RESOURCE_TYPE")
@ApiModelProperty(value = "资源类型")
private String resourceType;
@TableField("MESSAGE_TYPE")
@ApiModelProperty(value = "消息类型")
private String messageType;
@TableField("STANDARD_ID")
@ApiModelProperty(value = "标准类型")
private String standardId;
@TableField("STANDARD")
@ApiModelProperty(value = "标准号")
private String standard;
@TableField("STANDARD_NAME")
@ApiModelProperty(value = "标准名称")
private String standardName;
@TableField("RELEASE_DATE")
@ApiModelProperty(value = "发布日期")
private String releaseDate;
@TableField("TEXT_STATE")
@ApiModelProperty(value = "文本状态")
private String textState;
@TableField("RENEW_TIME")
@ApiModelProperty(value = "更新时间")
private Date renewTime;
}
@@ -0,0 +1,76 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("product_dept_issue")
public class ProductDeptIssue implements Serializable {
@TableId
private String id;
@TableField("law_id")
private String lawId;
@TableField(exist = false)
private String lawsNumber;
@TableField(exist = false)
private String lawsName;
@TableField("product_business")
private String productBusiness;
@TableField("platform")
private String platform;
@TableField("poj_name")
private String pojName;
@TableField("poj_description")
private String pojDescription;
@TableField("current_node")
private String currentNode;
// 概念状态
@TableField("conceptual_state")
private String conceptualState;
// 概念时间
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-mm-dd")
@TableField("scheduled_issuance_time")
private Date scheduledIssuanceTime;
//概念修订计划
@TableField("revised_plan")
private String revisedPlan;
// 其他说明
@TableField("explanation")
private String explanation;
@TableField("response_dept")
private String responseDept;
@TableLogic(value = "0",delval = "1")
@TableField("del_flag")
private String delFlag;
@TableField("is_close")
private String isClose;
@TableField(exist = false)
private Integer page;
@TableField(exist = false)
private Integer pageSize;
}
@@ -0,0 +1,71 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 集团参与情况
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgDept对象", description="集团参与情况")
public class WgDeptShow {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id",type = IdType.UUID)
private String id;
@ApiModelProperty(value = "工作组id")
@TableField("wg_id")
private String wgId;
@ApiModelProperty(value = "我司在工作组排名顺序")
@TableField("dept_order")
private String deptOrder;
@ApiModelProperty(value = "我司人员")
@TableField("dept_people_id")
private String deptPeopleId;
@ApiModelProperty(value = "身份")
@TableField("identity")
private String identity;
@ApiModelProperty(value = "资料")
@TableField("joinfile")
private String joinfile;
@ApiModelProperty(value = "中文名")
private String name;
@ApiModelProperty(value = "单位名称")
private String unit;
@ApiModelProperty(value = "单位")
private String unitId;
@ApiModelProperty(value = "电话")
private String phone;
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "部门Id")
private String deptId;
@ApiModelProperty(value = "部门名称")
private String deptName;
}
@@ -0,0 +1,73 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
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 com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 参会记录及资料
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgMeetingInfo对象", description="参会记录及资料")
@TableName("wg_meeting_info")
public class WgMeetingInfo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id",type = IdType.UUID)
private String id;
@ApiModelProperty(value = "工作组id")
@TableField("wg_id")
private String wgId;
@ApiModelProperty(value = "参会时间")
@TableField("meeting_time")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date meetingTime;
@ApiModelProperty(value = "会议名称")
@TableField("meeting_name")
private String meetingName;
@ApiModelProperty(value = "会议报告")
@TableField("meeting_report")
private String meetingReport;
@ApiModelProperty(value = "会议资料")
@TableField("joinfile")
private String joinfile;
@ApiModelProperty(value = "前端id")
@TableField("join_id")
private String joinId;
@ApiModelProperty(value = "人员信息")
@TableField(exist = false)
private List<String> meetingPeople;
@TableField(exist = false)
private List<WgMeetingUserRelationShow> joinMeetingPeopleInfo;
}
@@ -0,0 +1,33 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author super_liu
* @since 2021-11-09
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgMeetingUserRelation对象", description="")
public class WgMeetingUserRelationShow {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "会议id")
private String meetingId;
@ApiModelProperty(value = "人员id")
private String userId;
@ApiModelProperty(value = "人员名称")
private String name;
}
@@ -0,0 +1,61 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 工作组秘书联系方式
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgNetInfo对象", description="工作组秘书联系方式")
@TableName("wg_net_info")
public class WgNetInfoDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id",type = IdType.UUID)
private String id;
@ApiModelProperty(value = "工作组id")
@TableField("wg_id")
private String wgId;
@ApiModelProperty(value = "人员id")
@TableField("net_id")
private String netId;
@ApiModelProperty(value = "前端id")
@TableField("join_id")
private String joinId;
@ApiModelProperty(value = "中文名")
private String name;
@ApiModelProperty(value = "单位名称")
private String unit;
@ApiModelProperty(value = "单位")
private String unitId;
@ApiModelProperty(value = "电话")
private String phone;
@ApiModelProperty(value = "邮箱")
private String email;
}
@@ -0,0 +1,68 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 支付信息
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgPayInfo对象", description="支付信息")
@TableName("wg_pay_info")
public class WgPayInfo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id",type = IdType.UUID)
private String id;
@ApiModelProperty(value = "工作组id")
@TableField("wg_id")
private String wgId;
@ApiModelProperty(value = "价格")
@TableField("price")
private String price;
@ApiModelProperty(value = "年份")
@TableField("year")
private String year;
@ApiModelProperty(value = "支付状态(0:未支付,1:已支付)")
@TableField("status")
private String status;
@ApiModelProperty(value = "是否计划内(0:计划内,1:计划外)")
@TableField("inplan")
private String inplan;
@ApiModelProperty(value = "支付方式")
@TableField("pay_way")
private String payWay;
@ApiModelProperty(value = "支付资料")
@TableField("joinfile")
private String joinfile;
@ApiModelProperty(value = "费用列支")
@TableField("pay_info")
private String payInfo;
@ApiModelProperty(value = "前端id")
@TableField("join_id")
private String joinId;
}
@@ -0,0 +1,79 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* <p>
* 标准/政策 -信息
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgStandorpolicyInfo对象", description="标准/政策 -信息")
@TableName("wg_standorpolicy_info")
public class WgStandorpolicyInfo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId(value = "id",type = IdType.UUID)
private String id;
@ApiModelProperty(value = "工作组id")
@TableField("wg_id")
private String wgId;
@ApiModelProperty(value = "关联标准政策id")
@TableField("stand_id")
private String standId;
@ApiModelProperty(value = "政策/标准 类别")
@TableField(exist = false)
private String categary;
@ApiModelProperty(value = "政策/标准 编号")
@TableField(exist = false)
private String number;
@ApiModelProperty(value = "政策/标准 年份")
@TableField(exist = false)
private String year;
@ApiModelProperty(value = "政策标准 名称")
@TableField(exist = false)
private String name;
@ApiModelProperty(value = "政策/标准 英文名称")
@TableField(exist = false)
private String usname;
@ApiModelProperty(value = "文本状态")
@TableField(exist = false)
private String status;
@ApiModelProperty(value = "参与制定情况")
@TableField(exist = false)
private String joinDevelop;
@ApiModelProperty(value = "相关材料")
@TableField(exist = false)
private String netDatum;
@ApiModelProperty(value = "相关材料")
@TableField(exist = false)
private String dataType;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.business_main.datas.dto.WG;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* <p>
* 工作组主表
* </p>
*
* @author super_liu
* @since 2021-11-04
*/
@Data
@Accessors(chain = true)
@ApiModel(value="WgWorkGroup对象", description="工作组主表")
public class WgWorkGroupShowDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "工作组id")
private String id;
@ApiModelProperty(value = "父级id")
private String pid;
@ApiModelProperty(value = "编号")
private String number;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "性质(0:标委会,1:分标委,2:工作组,3:政策)")
private String nature;
@ApiModelProperty(value = "状态(0:流程中,1:流程已通过)")
private String status;
@ApiModelProperty(value = "换届时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date changeTime;
@ApiModelProperty(value = "标准化工作领域")
private String standerArea;
@ApiModelProperty(value = "备注")
private String mark;
@ApiModelProperty(value = "0:标准化流程 1:政策课题组")
private String types;
private String level;
//支付信息
List<WgPayInfo> wgPayInfos;
private String wgPayInfosDel;
//标准政策
List<WgStandorpolicyInfo> wgStandorpolicyInfos;
//集团参与情况
List<WgDeptShow> wgDepts;
private String wgDeptsDel;
//秘书联系方式
List<WgNetInfoDTO> wgNetInfos;
private String wgNetInfosDel;
//参会记录及资料
List<WgMeetingInfo> wgMeetingInfos;
private String wgMeetingInfosDel;
}
@@ -0,0 +1,119 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import lombok.Data;
@Data
public class BusMesSpecial {
private String userId;
private String taskId;
private String json;
private String specialJson;
private String taskIds;
private String pId;
private String prcType;
private String createUser;
private String createUserName;
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
private String dept;
private String userName;
private String id;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getJson() {
return json;
}
public void setJson(String json) {
this.json = json;
}
public String getTaskIds() {
return taskIds;
}
public void setTaskIds(String taskIds) {
this.taskIds = taskIds;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getPrcType() {
return prcType;
}
public void setPrcType(String prcType) {
this.prcType = prcType;
}
public String getCreateUserName() {
return createUserName;
}
public void setCreateUserName(String createUserName) {
this.createUserName = createUserName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
@@ -0,0 +1,82 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 流程评分历史表
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="BusProcessEvaluationHis对象", description="流程评分历史表")
public class BusProcessEvaluationHis implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "标准id")
@TableField("STAND_ID")
private String standId;
@ApiModelProperty(value = "处理人")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "信息")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "节点信息")
@TableField("TASK_INFO")
private String taskInfo;
@ApiModelProperty(value = "任务id")
@TableField("TASK_ID")
private String taskId;
@ApiModelProperty(value = "流程实例id")
@TableField("P_ID")
private String pId;
@ApiModelProperty(value = "流程名称")
@TableField("PRC_NAME")
private String prcName;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String updateTime;
@ApiModelProperty(value = "逻辑状态")
@TableField("FLAG")
private String flag;
@ApiModelProperty(value = "处理人姓名")
@TableField(exist = false)
private String userName;
}
@@ -0,0 +1,92 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 流程模块历史表
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="BusProcessModelHis对象", description="流程模块历史表")
public class BusProcessModelHis implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "标准id")
@TableField("STAND_ID")
private String standId;
@ApiModelProperty(value = "处理人")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "信息")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "节点信息")
@TableField("TASK_INFO")
private String taskInfo;
@ApiModelProperty(value = "任务id")
@TableField("TASK_ID")
private String taskId;
@ApiModelProperty(value = "流程实例id")
@TableField("P_ID")
private String pId;
@ApiModelProperty(value = "流程名称")
@TableField("PRC_NAME")
private String prcName;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String updateTime;
@ApiModelProperty(value = "onlyOffice 是否编辑 0 未编辑 1 已编辑")
@TableField("EDIT_STATUS")
private String editStatus;
@ApiModelProperty(value = "onlyOffice 编辑文件存储路径")
@TableField("EDIT_FILE_PATH")
private String editFilePath;
@ApiModelProperty(value = "onlyOffice 编辑类型 node 节点编辑 count 汇总编辑")
@TableField("EDIT_TYPE")
private String editType;
@ApiModelProperty(value = "逻辑状态")
@TableField("FLAG")
private String flag;
@ApiModelProperty(value = "onlyOffice 访问编辑文件全路径")
@TableField(exist = false)
private String downLoadUrl;
}
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -47,6 +49,7 @@ public class BusProcessName implements Serializable {
private String prcNum;
@TableField("CREAT_TIME")
@JsonFormat(timezone = "GMT+8")
private String creatTime;
@TableField("CREAT_USER")
@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -84,4 +87,37 @@ public class BusProcessNew implements Serializable {
@ApiModelProperty(value = "子流程ID")
@TableField("SUB_ID")
private String subId;
@ApiModelProperty(value = "流程名称")
@TableField("PRC_NAME")
private String prcName;
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@TableField( exist = false)
@ApiModelProperty(value = "OA link")
private String link;
@TableField( exist = false)
@ApiModelProperty(value = "干活任务截止时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String endTime;
@TableField( exist = false)
@ApiModelProperty(value = "任务状态 0 默认 1 审批任务 2 干活任务")
private int taskStatus;
@TableField( exist = false)
@ApiModelProperty(value = "提交状态 0 提交 其它 接受 ")
private long commitStatus;
@TableField( exist = false)
@ApiModelProperty(value = "当前节点信息")
private String nowTaskInfo;
}
@@ -0,0 +1,47 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain = true)
@ApiModel(value="EsPrcRelation对象", description="企标计划和技术标准流程关联表")
public class EsPrcRelation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "企标计划ID")
private String esId;
@ApiModelProperty(value = "流程ID")
private String prcId;
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty(value = "修改时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ApiModelProperty(value = "OA待办标识")
private String oaFlag; // 0-已办 1-待办
@ApiModelProperty(value = "企标计划管控流程的实例ID")
private String prcIdGk;
}
@@ -0,0 +1,116 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* <p>
* 企标制修订计划
* </p>
*
* @author zcr
* @since 2021-11-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value="EsRevisePlan对象", description="企标制修订计划")
public class EsRevisePlanDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "企标名称")
private String esName;
@ApiModelProperty(value = "计划状态")
private String planStatus;
@ApiModelProperty(value = "制修订状态")
private String reviseStatus;
@ApiModelProperty(value = "起草人")
private String drafter;
@ApiModelProperty(value = "评审责任人")
private String resPerson;
@ApiModelProperty(value = "工作组组长")
private String wgLeader;
@ApiModelProperty(value = "起草人姓名")
private String drafterName;
@ApiModelProperty(value = "评审责任人姓名")
private String resPersonName;
@ApiModelProperty(value = "工作组组长姓名")
private String wgLeaderName;
@ApiModelProperty(value = "计划标准初稿完成时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date draftTime;
@ApiModelProperty(value = "计划标准发布时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date releaseTime;
@ApiModelProperty(value = "起草责任单位")
private String unit;
@ApiModelProperty(value = "起草责任单位ID")
private String unitName;
@ApiModelProperty(value = "引入企业标准json(标准id)")
private String rqbJson;
@ApiModelProperty(value = "引入企业标准json(标准名称)")
private String rqbName;
@ApiModelProperty(value = "引入企业标准json(标准编号)")
private String rqbCode;
@ApiModelProperty(value = "体系结构树(id存储方式是逗号拼接)")
private String tsJson;
@ApiModelProperty(value = "体系结构树(名称逗号拼接展示)")
private String tsJsonName;
@ApiModelProperty(value = "标准范围")
private String area;
@ApiModelProperty(value = "标准范围")
private String areaName;
//企标类别
private String standType;
@ApiModelProperty(value = "企标类别")
private String esMatingRelations;
private String esStandRelations;
@ApiModelProperty(value = "是否引用标准")
@TableField("is_relate")
private String isRelate;
@ApiModelProperty(value = "采用程度")
@TableField("use_level")
private String useLevel;
private String useLevelName;
@ApiModelProperty(value = "简述技术指标依据")
@TableField("technologic")
private String technologic;
@ApiModelProperty(value = "企标类别")
@TableField("buss_sort")
private String bussSort;
@ApiModelProperty(value = "立项单")
@TableField("LXD")
private String lxd;
}
@@ -0,0 +1,34 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel(value="EsTechRelation对象", description="企标计划和技术标准流程关联表")
public class EsTechRelation {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "企标计划ID")
private String esId;
@ApiModelProperty(value = "复审流程实例ID")
private String prcId;
@ApiModelProperty(value = "流程是否结束")
private String finish;
@ApiModelProperty(value = "企标制修订技术标准流程实例ID")
private String prcTechId;
}
@@ -0,0 +1,86 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* OA 干活任务执行表
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="OaTaskExec对象", description="OA 干活任务执行表")
public class OaTaskExec implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "执行维度 1 3天内 2 3天外 3 超时")
@TableField("EXEC_TYPE")
private int execType;
@ApiModelProperty(value = "待办ID")
@TableField("TODO_ID")
private String todoId;
@ApiModelProperty(value = "待办用户ID")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "待办对象JSON")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "执行状态 0 未启动 1 已启动 2 已完成")
@TableField("EXEC_STATUS")
private int execStatus;
@ApiModelProperty(value = "执行时间")
@TableField("EXEC_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String execTime;
@ApiModelProperty(value = "截止时间")
@TableField("END_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String endTime;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String updateTime;
@ApiModelProperty(value = "参数1")
@TableField("PARAM1")
private int param1;
@ApiModelProperty(value = "参数2")
@TableField("PARAM2")
private String param2;
}
@@ -0,0 +1,528 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.*;
/**
* <p>
* 企业标准信息表
* </p>
*
* @author super_liu
* @since 2021-07-13
*/
@Data
@Accessors(chain = true)
@ApiModel(value="SarBussionessStand对象", description="企业标准信息表")
public class SarBussionessStand {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private String id;
@ApiModelProperty(value = "企标标准号")
@TableField("STAND_CODE")
private String standCode;
@ApiModelProperty(value = "标准编号")
@TableField("STAND_NUMBER")
private String standNumber;
@ApiModelProperty(value = "标准名称")
@TableField("STAND_NAME")
private String standName;
@ApiModelProperty(value = "标准英文名称")
@TableField("STAND_EN_NAME")
private String standEnName;
@ApiModelProperty(value = "发布日期")
@TableField("ISSUE_TIME")
private String issueTime;
@ApiModelProperty(value = "实施日期")
@TableField("PUT_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String putTime;
@ApiModelProperty(value = "代替标准号")
@TableField("REPLACE_STAND_NUM")
private String replaceStandNum;
@ApiModelProperty(value = "被代替标准号")
@TableField("REPLACED_STAND_NUM")
private String replacedStandNum;
@ApiModelProperty(value = "标准状态")
@TableField("STAND_STATUS")
private String standStatus;
@ApiModelProperty(value = "适用国家/地区")
@TableField("APPLY_COUNTRY")
private String applyCountry;
@ApiModelProperty(value = "标准性质")
@TableField("STAND_NATURE")
private String standNature;
@ApiModelProperty(value = "标准类别")
@TableField("STAND_SORT")
private String standSort;
@ApiModelProperty(value = "标准年份")
@TableField("STAND_YEAR")
private String standYear;
@ApiModelProperty(value = "是否有效")
@TableField("VALID_FLAG")
private Integer validFlag;
@ApiModelProperty(value = "创建时间")
@TableField("CREATION_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date creationTime;
@ApiModelProperty(value = "修改时间")
@TableField("MODIFY_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date modifyTime;
// 新添加字段
@ApiModelProperty(value = "文本状态")
@TableField("TEXT_STATUS_BUSS")
private String textStatusBuss;
// 非表字段
@TableField(exist = false)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String firstPutTime;
@TableField(exist = false)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String putTimeShow;
@TableField(exist = false)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String issueTimeShow;
@TableField(exist = false)
private String issueTimeStr;
@TableField(exist = false)
private String putTimeStr;
//目录ID 非标准信息表中的字段
@TableField(exist = false)
private String menuId;
@TableField(exist = false)
private String menuParentId;
@TableField(exist = false)
private String standStatusShow; // 标准状态下拉框 --单选
@TableField(exist = false)
private String standNatrueShow;
@TableField(exist = false)
private String standSortShow;
@TableField(exist = false)
private String applyCountryShow;
@TableField(exist = false)
private List<AttFileVo> standFileList = new ArrayList<AttFileVo>();
@TableField(exist = false)
private List<AttFileVo> opinionFilesList = new ArrayList<AttFileVo>();
@TableField(exist = false)
private List<AttFileVo> relevanceFileList = new ArrayList<AttFileVo>();
@TableField(exist = false)
private String collectId;
//文件的类型
@TableField(exist = false)
private String standFileClassify;
//文件的下载id
@TableField(exist = false)
private String attId;
//记录是否修改了替代文件号
@TableField(exist = false)
private int upReplaceNumFlag;
//记录是否修改了文件号
@TableField(exist = false)
private int upNumFlag;
// 数据库新加的字段
@TableField(exist = false)
private String remark;//备注
@TableField(exist = false)
private Map<String, Object> attrInfoMap = new LinkedHashMap<>(); //属性表字段与值
@TableField(exist = false)
private Map<String, Object> attrInfoCaseMap = new LinkedHashMap<>(); //属性表字段与值小写前端带入渲染
@TableField(exist = false)
private String sarStandAttrEOStr; //新增修改时属性表信息
@TableField(exist = false)
private String fileIds; //全部文件ID
@TableField(exist = false)
private List<SarStandAttrDetailsEO> attrInfoList = new ArrayList<>();
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getStandCode() {
return standCode;
}
public void setStandCode(String standCode) {
this.standCode = standCode;
}
public String getStandName() {
return standName;
}
public void setStandName(String standName) {
this.standName = standName;
}
public String getStandEnName() {
return standEnName;
}
public void setStandEnName(String standEnName) {
this.standEnName = standEnName;
}
public String getIssueTime() {
return issueTime;
}
public void setIssueTime(String issueTime) {
this.issueTime = issueTime;
}
public String getPutTime() {
return putTime;
}
public void setPutTime(String putTime) {
this.putTime = putTime;
}
public String getReplaceStandNum() {
return replaceStandNum;
}
public void setReplaceStandNum(String replaceStandNum) {
this.replaceStandNum = replaceStandNum;
}
public String getReplacedStandNum() {
return replacedStandNum;
}
public void setReplacedStandNum(String replacedStandNum) {
this.replacedStandNum = replacedStandNum;
}
public String getStandStatus() {
return standStatus;
}
public void setStandStatus(String standStatus) {
this.standStatus = standStatus;
}
public String getApplyCountry() {
return applyCountry;
}
public void setApplyCountry(String applyCountry) {
this.applyCountry = applyCountry;
}
public String getStandNature() {
return standNature;
}
public void setStandNature(String standNature) {
this.standNature = standNature;
}
public String getStandSort() {
return standSort;
}
public void setStandSort(String standSort) {
this.standSort = standSort;
}
public String getStandYear() {
return standYear;
}
public void setStandYear(String standYear) {
this.standYear = standYear;
}
public Integer getValidFlag() {
return validFlag;
}
public void setValidFlag(Integer validFlag) {
this.validFlag = validFlag;
}
public Date getCreationTime() {
return creationTime;
}
public void setCreationTime(Date creationTime) {
this.creationTime = creationTime;
}
public Date getModifyTime() {
return modifyTime;
}
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
public String getTextStatusBuss() {
return textStatusBuss;
}
public void setTextStatusBuss(String textStatusBuss) {
this.textStatusBuss = textStatusBuss;
}
public String getFirstPutTime() {
return firstPutTime;
}
public void setFirstPutTime(String firstPutTime) {
this.firstPutTime = firstPutTime;
}
public String getPutTimeShow() {
return putTimeShow;
}
public void setPutTimeShow(String putTimeShow) {
this.putTimeShow = putTimeShow;
}
public String getIssueTimeShow() {
return issueTimeShow;
}
public void setIssueTimeShow(String issueTimeShow) {
this.issueTimeShow = issueTimeShow;
}
public String getIssueTimeStr() {
return issueTimeStr;
}
public void setIssueTimeStr(String issueTimeStr) {
this.issueTimeStr = issueTimeStr;
}
public String getPutTimeStr() {
return putTimeStr;
}
public void setPutTimeStr(String putTimeStr) {
this.putTimeStr = putTimeStr;
}
public String getMenuId() {
return menuId;
}
public void setMenuId(String menuId) {
this.menuId = menuId;
}
public String getMenuParentId() {
return menuParentId;
}
public void setMenuParentId(String menuParentId) {
this.menuParentId = menuParentId;
}
public String getStandStatusShow() {
return standStatusShow;
}
public void setStandStatusShow(String standStatusShow) {
this.standStatusShow = standStatusShow;
}
public String getStandNatrueShow() {
return standNatrueShow;
}
public void setStandNatrueShow(String standNatrueShow) {
this.standNatrueShow = standNatrueShow;
}
public String getStandSortShow() {
return standSortShow;
}
public void setStandSortShow(String standSortShow) {
this.standSortShow = standSortShow;
}
public String getApplyCountryShow() {
return applyCountryShow;
}
public void setApplyCountryShow(String applyCountryShow) {
this.applyCountryShow = applyCountryShow;
}
public List<AttFileVo> getStandFileList() {
return standFileList;
}
public void setStandFileList(List<AttFileVo> standFileList) {
this.standFileList = standFileList;
}
public List<AttFileVo> getOpinionFilesList() {
return opinionFilesList;
}
public void setOpinionFilesList(List<AttFileVo> opinionFilesList) {
this.opinionFilesList = opinionFilesList;
}
public List<AttFileVo> getRelevanceFileList() {
return relevanceFileList;
}
public void setRelevanceFileList(List<AttFileVo> relevanceFileList) {
this.relevanceFileList = relevanceFileList;
}
public String getCollectId() {
return collectId;
}
public void setCollectId(String collectId) {
this.collectId = collectId;
}
public String getStandFileClassify() {
return standFileClassify;
}
public void setStandFileClassify(String standFileClassify) {
this.standFileClassify = standFileClassify;
}
public String getAttId() {
return attId;
}
public void setAttId(String attId) {
this.attId = attId;
}
public int getUpReplaceNumFlag() {
return upReplaceNumFlag;
}
public void setUpReplaceNumFlag(int upReplaceNumFlag) {
this.upReplaceNumFlag = upReplaceNumFlag;
}
public int getUpNumFlag() {
return upNumFlag;
}
public void setUpNumFlag(int upNumFlag) {
this.upNumFlag = upNumFlag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Map<String, Object> getAttrInfoMap() {
return attrInfoMap;
}
public void setAttrInfoMap(Map<String, Object> attrInfoMap) {
this.attrInfoMap = attrInfoMap;
}
public Map<String, Object> getAttrInfoCaseMap() {
return attrInfoCaseMap;
}
public void setAttrInfoCaseMap(Map<String, Object> attrInfoCaseMap) {
this.attrInfoCaseMap = attrInfoCaseMap;
}
public String getSarStandAttrEOStr() {
return sarStandAttrEOStr;
}
public void setSarStandAttrEOStr(String sarStandAttrEOStr) {
this.sarStandAttrEOStr = sarStandAttrEOStr;
}
public String getFileIds() {
return fileIds;
}
public void setFileIds(String fileIds) {
this.fileIds = fileIds;
}
public List<SarStandAttrDetailsEO> getAttrInfoList() {
return attrInfoList;
}
public void setAttrInfoList(List<SarStandAttrDetailsEO> attrInfoList) {
this.attrInfoList = attrInfoList;
}
}
@@ -0,0 +1,72 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 企业标准信息复审表
* </p>
*
* @author super_liu
* @since 2022-01-23
*/
@Data
@ApiModel(value="SarBussionessStandStatePage对象", description="企业标准信息复审表分页")
public class SarBussionessStandStatePage{
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键/企业标准信息主键")
private String id;
@ApiModelProperty(value = "企标ID")
private String standId;
@ApiModelProperty(value = "名称")
private String standName;
@ApiModelProperty(value = "企标编号")
private String standCode;
@ApiModelProperty(value = "复审时间")
private Date reviewTime;
@ApiModelProperty(value = "发布日期")
private Date issueTime;
@ApiModelProperty(value = "复审结果 1 修订、2 废止、3 继续有效")
private Integer reviewResults;
@ApiModelProperty(value = "复审关联流程编号")
private String reviewProcessNum;
@ApiModelProperty(value = "创建日期")
private Date creationTime;
@ApiModelProperty(value = "更新日期")
private Date modifyTime;
private Integer validFlag;
@ApiModelProperty(value = "参数1")
private Integer param1;
@ApiModelProperty(value = "参数2")
private String param2;
private String reviewTimeStart;
private String reviewTimeEnd;
private String issueTimeStart;
private String issueTimeEnd;
private String QCDW;
private String QCRBUSS;
private String standSort;
}
@@ -0,0 +1,88 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* OA日志表
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="SendTodoLog对象", description="OA日志表")
public class SendTodoLog implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "ID", type = IdType.UUID)
private String id;
@ApiModelProperty(value = "类型 0 待办, 1已办, 2 取消, 3 删除")
@TableField("MSG_TYPE")
private String msgType;
@ApiModelProperty(value = "待办ID")
@TableField("TODO_ID")
private String todoId;
@ApiModelProperty(value = "待办用户ID")
@TableField("USER_ID")
private String userId;
@ApiModelProperty(value = "邮箱用户ID")
@TableField("EMAIL_USER_ID")
private String emailUserId;
@ApiModelProperty(value = "待办对象JSON")
@TableField("MESG")
private String mesg;
@ApiModelProperty(value = "状态 1 待发送 2 成功 3 失败 4 无需发送")
@TableField("MSG_STATUS")
private String msgStatus;
@ApiModelProperty(value = "失败次数")
@TableField("ERR_NUM")
private int errNum;
@ApiModelProperty(value = "操作信息")
@TableField("OPER_MESG")
private String operMesg;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime;
@ApiModelProperty(value = "更新时间")
@TableField("UPDATE_TIME")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private String updateTime;
@ApiModelProperty(value = "参数1")
@TableField("PARAM1")
private String param1;
@ApiModelProperty(value = "参数2")
@TableField("PARAM2")
private String param2;
}
@@ -0,0 +1,58 @@
package com.ydw.bat.wkflow.business_main.datas.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 动态定时任务表
* </p>
*
* @author super_liu
* @since 2022-05-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="TbTask对象", description="动态定时任务表")
public class TbTask implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "定时任务id")
@TableId("ID")
private String id;
@ApiModelProperty(value = "定时任务名称")
private String taskName;
@ApiModelProperty(value = "定时任务描述")
private String taskDesc;
@ApiModelProperty(value = "定时任务Cron表达式")
private String taskExp;
@ApiModelProperty(value = "定时任务状态,0停用 1启用")
private Integer taskStatus;
@ApiModelProperty(value = "定时任务的Runnable任务类完整路径")
private String taskClass;
@ApiModelProperty(value = "更新时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date updateTime;
@ApiModelProperty(value = "创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private Date createTime;
}
@@ -0,0 +1,46 @@
/**
* Copyright 2022 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.entity.standState;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* Auto-generated: 2022-06-23 15:31:2
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
@Data
public class ModelData {
private String id;
private String standId;
private String standName;
private String standCode;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String reviewTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String issueTime;
private String reviewResults;
private String reviewProcessNum;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String creationTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String modifyTime;
private int validFlag;
private String param1;
private String param2;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private String putTime;
private String standSort;
private String qcdw;
private String fsrqbuss;
private String qcrbuss;
private String processStatus;
private String bussFsSubUser1;
private String bussFsSubUser1Name;
}
@@ -0,0 +1,95 @@
/**
* Copyright 2022 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.entity.standState;
import java.util.List;
/**
* Auto-generated: 2022-06-23 15:31:2
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class QbfsForm {
private List<ModelData> modelData;
private String entNumber= "";
private String cnName= "";
private String enName= "";
private String entCategory= "";
private String replaceNumber= "";
private String replacedNumber= "";
private String releaseDate= "";
private String implementDate= "";
private String reviewDate= "";
public void setModelData(List<ModelData> modelData) {
this.modelData = modelData;
}
public List<ModelData> getModelData() {
return modelData;
}
public void setEntNumber(String entNumber) {
this.entNumber = entNumber;
}
public String getEntNumber() {
return entNumber;
}
public void setCnName(String cnName) {
this.cnName = cnName;
}
public String getCnName() {
return cnName;
}
public void setEnName(String enName) {
this.enName = enName;
}
public String getEnName() {
return enName;
}
public void setEntCategory(String entCategory) {
this.entCategory = entCategory;
}
public String getEntCategory() {
return entCategory;
}
public void setReplaceNumber(String replaceNumber) {
this.replaceNumber = replaceNumber;
}
public String getReplaceNumber() {
return replaceNumber;
}
public void setReplacedNumber(String replacedNumber) {
this.replacedNumber = replacedNumber;
}
public String getReplacedNumber() {
return replacedNumber;
}
public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}
public String getReleaseDate() {
return releaseDate;
}
public void setImplementDate(String implementDate) {
this.implementDate = implementDate;
}
public String getImplementDate() {
return implementDate;
}
public void setReviewDate(String reviewDate) {
this.reviewDate = reviewDate;
}
public String getReviewDate() {
return reviewDate;
}
}
@@ -0,0 +1,110 @@
/**
* Copyright 2022 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.entity.standState;
/**
* Auto-generated: 2022-06-23 15:31:2
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class RoleForm {
private String prcCreateUserName = "";
private String prcCreateUser= "";
private String dockUser= "";
private String dockUserName= "";
private String bussFsSubUser2= "";
private String bussFsSubUser2Name= "";
private String bussFsUser2= "";
private String bussFsUser2Name= "";
private String bussFsUserC2= "";
private String bussFsUserC2Name= "";
private String bussFsUser3= "";
private String bussFsUser3Name= "";
public void setPrcCreateUserName(String prcCreateUserName) {
this.prcCreateUserName = prcCreateUserName;
}
public String getPrcCreateUserName() {
return prcCreateUserName;
}
public void setPrcCreateUser(String prcCreateUser) {
this.prcCreateUser = prcCreateUser;
}
public String getPrcCreateUser() {
return prcCreateUser;
}
public void setDockUser(String dockUser) {
this.dockUser = dockUser;
}
public String getDockUser() {
return dockUser;
}
public void setDockUserName(String dockUserName) {
this.dockUserName = dockUserName;
}
public String getDockUserName() {
return dockUserName;
}
public void setBussFsSubUser2(String bussFsSubUser2) {
this.bussFsSubUser2 = bussFsSubUser2;
}
public String getBussFsSubUser2() {
return bussFsSubUser2;
}
public void setBussFsSubUser2Name(String bussFsSubUser2Name) {
this.bussFsSubUser2Name = bussFsSubUser2Name;
}
public String getBussFsSubUser2Name() {
return bussFsSubUser2Name;
}
public void setBussFsUser2(String bussFsUser2) {
this.bussFsUser2 = bussFsUser2;
}
public String getBussFsUser2() {
return bussFsUser2;
}
public void setBussFsUser2Name(String bussFsUser2Name) {
this.bussFsUser2Name = bussFsUser2Name;
}
public String getBussFsUser2Name() {
return bussFsUser2Name;
}
public void setBussFsUserC2(String bussFsUserC2) {
this.bussFsUserC2 = bussFsUserC2;
}
public String getBussFsUserC2() {
return bussFsUserC2;
}
public void setBussFsUserC2Name(String bussFsUserC2Name) {
this.bussFsUserC2Name = bussFsUserC2Name;
}
public String getBussFsUserC2Name() {
return bussFsUserC2Name;
}
public void setBussFsUser3(String bussFsUser3) {
this.bussFsUser3 = bussFsUser3;
}
public String getBussFsUser3() {
return bussFsUser3;
}
public void setBussFsUser3Name(String bussFsUser3Name) {
this.bussFsUser3Name = bussFsUser3Name;
}
public String getBussFsUser3Name() {
return bussFsUser3Name;
}
}
@@ -0,0 +1,46 @@
/**
* Copyright 2022 bejson.com
*/
package com.ydw.bat.wkflow.business_main.datas.entity.standState;
/**
* Auto-generated: 2022-06-23 15:31:2
*
* @author bejson.com (i@bejson.com)
* @website http://www.bejson.com/java2pojo/
*/
public class StandStateDraft {
private String taskInfo="起草";
private RoleForm roleForm;
private QbfsForm qbfsForm;
private String commentText= "";
public void setTaskInfo(String taskInfo) {
this.taskInfo = taskInfo;
}
public String getTaskInfo() {
return taskInfo;
}
public void setRoleForm(RoleForm roleForm) {
this.roleForm = roleForm;
}
public RoleForm getRoleForm() {
return roleForm;
}
public void setQbfsForm(QbfsForm qbfsForm) {
this.qbfsForm = qbfsForm;
}
public QbfsForm getQbfsForm() {
return qbfsForm;
}
public void setCommentText(String commentText) {
this.commentText = commentText;
}
public String getCommentText() {
return commentText;
}
}
@@ -0,0 +1,18 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import org.springframework.stereotype.Repository;
/**
* <p>
* 流程评分历史表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Repository
public interface BusProcessEvaluationHisMapper extends BaseMapper<BusProcessEvaluationHis> {
}
@@ -0,0 +1,19 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessModelHis;
import org.springframework.stereotype.Repository;
/**
* <p>
* 流程模块历史表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Repository
public interface BusProcessModelHisMapper extends BaseMapper<BusProcessModelHis> {
}
@@ -1,5 +1,6 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.ydw.bat.wkflow.business_activiti.dto.TaskCommonQuery;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
@@ -19,4 +20,6 @@ public interface BusProcessNameMapper extends BaseMapper<BusProcessName> {
//查询符合要求的 name 信息
List<BusProcessName> findBusProcessNameForEnd(String taskId);
List<BusProcessName> todoTask(@Param("task") TaskCommonQuery taskCommonQuery);
}
@@ -26,4 +26,12 @@ public interface BusProcessNewMapper extends BaseMapper<BusProcessNew> {
List<BusProcessNew> findNoExecuteBusProcessNewForEnd(@Param("taskIds")List<String> taskIds);
// String queryTaskName(@Param("id")String id);
List<BusProcessNew> findLastworkPeople(@Param("key")String key,@Param("pId")String pId);
List<BusProcessNew> findLastworkPeople2(@Param("key")String key,@Param("pId")String pId);
List<BusProcessNew> everyDayTenOlock();
List<BusProcessNew> everyDayTenOlockSAM();
}
@@ -0,0 +1,18 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation;
import org.springframework.stereotype.Repository;
/**
* <p>
* 企标计划和技术标准流程关联表 Mapper 接口
* </p>
*
* @author iyawei
* @since 2022-11-18
*/
@Repository
public interface EsPrcRelationMapper extends BaseMapper<EsPrcRelation> {
}
@@ -0,0 +1,9 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.EsTechRelation;
import org.springframework.stereotype.Repository;
@Repository
public interface EsTechRelationMapper extends BaseMapper<EsTechRelation> {
}
@@ -0,0 +1,16 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* OA 干活任务执行表 Mapper 接口
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
public interface OaTaskExecMapper extends BaseMapper<OaTaskExec> {
}
@@ -0,0 +1,18 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* OA日志表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Repository
public interface SendTodoLogMapper extends BaseMapper<SendTodoLog> {
}
@@ -0,0 +1,18 @@
package com.ydw.bat.wkflow.business_main.datas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ydw.bat.wkflow.business_main.datas.entity.TbTask;
import org.springframework.stereotype.Repository;
/**
* <p>
* 动态定时任务表 Mapper 接口
* </p>
*
* @author super_liu
* @since 2022-05-27
*/
@Repository
public interface TbTaskMapper extends BaseMapper<TbTask> {
}
@@ -0,0 +1,26 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import java.util.List;
import java.util.Map;
/**
* <p>
* 流程评分历史表 服务类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
public interface IBusProcessEvaluationHisService extends IService<BusProcessEvaluationHis> {
Map<String,Integer> evaluationHisListRepSum(String pid);
BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo);
List<BusProcessEvaluationHis> evaluationHisListRep(String pid);
List<BusProcessEvaluationHis> evaluationHisList(String pid);
}
@@ -0,0 +1,39 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessModelHis;
import java.util.List;
/**
* <p>
* 流程模块历史表 服务类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
public interface IBusProcessModelHisService extends IService<BusProcessModelHis> {
BusProcessModelHis modelHisOneUpdStatusById(String id);
BusProcessModelHis modelHisOneUpdStatus(String pid,String taskId);
BusProcessModelHis modelHisOneCount(String pid);
BusProcessModelHis processEditFile(String id);
BusProcessModelHis modelHisOne(String pid,String taskId);
BusProcessModelHis saveEditFile(String model);
List<BusProcessModelHis> modelHisList(String pid);
String saveBussModelFile(String pid, String taskId);
String mergeModelFile(String pid, String taskId,String fileSuffix);
void saveBussTemplateFile(JSONObject object, String pid);
}
@@ -1,5 +1,6 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_activiti.dto.TaskCommonQuery;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,4 +18,10 @@ import java.util.List;
public interface IBusProcessNameService extends IService<BusProcessName> {
List<BusProcessName> findBusProcessNameForEnd(String prcNum);
//新查询代办接口 初步测试中
List<BusProcessName> todoTask(TaskCommonQuery taskCommonQuery);
String delDB(List<String> id);
}
@@ -3,6 +3,7 @@ package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.baomidou.mybatisplus.extension.service.IService;
import org.activiti.engine.task.Task;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -28,5 +29,11 @@ public interface IBusProcessNewService extends IService<BusProcessNew> {
List<BusProcessNew> findTaskDetailByTaskIds(List<String> taskIdList);
List<BusProcessNew> findNoExecuteBusProcessNewForEnd(List<String> taskIdList);
//子流程 获取 阶段数据 专用 BY yzh
List<BusProcessNew> findLastworkPeople(@Param("key")String key, @Param("pId")String pId);
List<BusProcessNew> findLastworkPeople2(@Param("key")String key, @Param("pId")String pId);
List<BusProcessNew> everyDayTenOlock();
List<BusProcessNew> everyDayTenOlockSAM();
}
@@ -0,0 +1,45 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation;
import java.util.List;
public interface IEsPrcRelationService extends IService<EsPrcRelation> {
/**
*
* @param esId
* @return
*/
List<EsPrcRelation> list(String esId);
/**
*
* @return
*/
Boolean listJudge(EsPrcRelation esPrcRelation);
/**
*
* @param esId
* @param prcId
* @return
*/
int addEsPrcRelation(String esId, String prcId, String prcIdGk);
/**
*
* @param esId
* @param prcId
* @param oaFlag
* @return
*/
int modifyEsPrcRelation(String esId, String prcId, String oaFlag, String prcIdGk);
/**
*
* @param esId
* @return
*/
int delEsPrcRelation(String esId);
}
@@ -0,0 +1,8 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.EsTechRelation;
public interface IEsTechRelationService extends IService<EsTechRelation> {
}
@@ -0,0 +1,21 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
/**
* <p>
* OA 干活任务执行表 服务类
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
public interface IOaTaskExecService extends IService<OaTaskExec> {
Map<String,Object> execTask(String todoId);
String endTime(String pId);
}
@@ -0,0 +1,16 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* OA日志表 服务类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
public interface ISendTodoLogService extends IService<SendTodoLog> {
}
@@ -0,0 +1,16 @@
package com.ydw.bat.wkflow.business_main.datas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ydw.bat.wkflow.business_main.datas.entity.TbTask;
/**
* <p>
* 动态定时任务表 服务类
* </p>
*
* @author super_liu
* @since 2022-05-27
*/
public interface ITbTaskService extends IService<TbTask> {
}
@@ -0,0 +1,130 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessEvaluationHisMapper;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService;
import com.ydw.bat.wkflow.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 流程评分历史表 服务实现类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Service
public class BusProcessEvaluationHisServiceImpl extends ServiceImpl<BusProcessEvaluationHisMapper, BusProcessEvaluationHis> implements IBusProcessEvaluationHisService {
@Autowired
private LawsUserInfoService lawsUserInfoService;
@Override
public BusProcessEvaluationHis evaluationHisListByOne(String pid,String taskInfo){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.like("TASK_INFO",taskInfo);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
BusProcessEvaluationHis his = new BusProcessEvaluationHis();
if(!list.isEmpty()){
his = list.get(0);
}
return his;
}
@Override
public Map<String,Integer> evaluationHisListRepSum(String pid){
Map<String,Integer> map = new HashMap<>();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
List<BusProcessEvaluationHis> evaluationHis = new ArrayList<>();
Map<String, List<BusProcessEvaluationHis>> listMap = new TreeMap<>();
// 按 相同数据分组
listMap = list.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}#{2}", a.getPId(),a.getTaskInfo(),a.getUserId())));
if(!listMap.isEmpty()){
listMap.forEach((key, value) -> {
if(!value.isEmpty()){
evaluationHis.add(value.get(0));
}
});
}
Map<String, List<BusProcessEvaluationHis>> listMapFilter = new TreeMap<>();
listMapFilter = evaluationHis.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}", a.getPId(),a.getTaskInfo())));
if(!listMapFilter.isEmpty()){
listMapFilter.forEach((key, value) -> {
if(!value.isEmpty()){
int sum = 0;
for (BusProcessEvaluationHis his : value) {
List<JSONObject> valueArr = JSONArray.parseArray(his.getMesg(),JSONObject.class);
if(!valueArr.isEmpty()){
sum = sum + Integer.parseInt(valueArr.get(0).getString("sum").trim());
}
}
String keyV = value.get(0).getTaskInfo();
int ave = value.size();
map.put(keyV,sum/ave);
}
});
}
return map;
}
@Override
public List<BusProcessEvaluationHis> evaluationHisListRep(String pid){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
List<BusProcessEvaluationHis> list = this.baseMapper.selectList(wrapper);
List<BusProcessEvaluationHis> evaluationHis = new ArrayList<>();
Map<String, List<BusProcessEvaluationHis>> listMap = new TreeMap<>();
// 按 相同数据分组
listMap = list.stream().collect(
Collectors.groupingBy(a -> Utils.format("{0}#{1}#{2}", a.getPId(),a.getTaskInfo(),a.getUserId())));
if(!listMap.isEmpty()){
listMap.forEach((key, value) -> {
if(!value.isEmpty()){
ResponseMessage<UserVO> byId = lawsUserInfoService.getById(value.get(0).getUserId());
value.get(0).setUserName(byId == null ? "" : byId.getData().getUname());
evaluationHis.add(value.get(0));
}
});
}
if(!evaluationHis.isEmpty()){
evaluationHis.sort(Comparator.comparing(BusProcessEvaluationHis::getCreateTime).reversed().thenComparing(BusProcessEvaluationHis::getTaskInfo));
}
return evaluationHis;
}
@Override
public List<BusProcessEvaluationHis> evaluationHisList(String pid){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.orderByDesc("CREATE_TIME","TASK_INFO");
return this.baseMapper.selectList(wrapper);
}
}
@@ -0,0 +1,259 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessEvaluationHis;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessModelHis;
import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessEvaluationHisMapper;
import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessModelHisMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessModelHisService;
import com.ydw.bat.wkflow.listener.bussLibrary.Utils.PoiUtil;
import com.ydw.bat.wkflow.listener.bussLibrary.Utils.PoiWord;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* <p>
* 流程模块历史表 服务实现类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Service
public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHisMapper, BusProcessModelHis> implements IBusProcessModelHisService {
private static final Logger logger = LoggerFactory.getLogger(BusProcessModelHisServiceImpl.class);
@Value("${buss.edit.file.path}")
private String filePath;//文件存储路径
/**
* 文件下载路径
*/
@Value("${buss.down.file.path}")
private String downloadUrl;
@Override
public BusProcessModelHis saveEditFile(String model){
BusProcessModelHis modelHis = new BusProcessModelHis();
try {
String preUuid2 = UUID.randomUUID().toString();
String changUuid = preUuid2.substring(0,8);
String taskId = "task_"+changUuid;
String topId = "top_"+changUuid;
StringBuilder builderModel=new StringBuilder();
builderModel.append("model").append("/");
builderModel.append("model").append("/");
File dir = new File(filePath+builderModel.toString());
if (!dir.exists()) {
dir.mkdirs();
}
String sourcePath = builderModel.toString()+model+".docx";
StringBuilder builder=new StringBuilder();
builder.append("model").append("/");
builder.append(taskId).append("/");
File file = new File(filePath+builder.toString());
if (!file.exists()) {
file.mkdirs();
}
String targetPath = builder.toString()+taskId+"_"+topId+"_node.docx";
File sourceFile = new File(filePath+sourcePath);
File targetFile = new File(filePath+targetPath);
FileUtils.copyFile(sourceFile, targetFile);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
modelHis.setTaskId(taskId);
modelHis.setPId(topId);
modelHis.setEditFilePath(targetPath);
modelHis.setCreateTime(sdf.format(new Date()));
modelHis.setUpdateTime(sdf.format(new Date()));
this.baseMapper.insert(modelHis);
}catch (Exception e){
logger.error(e.getMessage());
}
return modelHis;
}
@Override
public String mergeModelFile(String pid, String taskId,String fileSuffix){
String fileSavePath = "bussEdit"+ getUUIDPath(pid,taskId);
StringBuilder builder=new StringBuilder();
builder.append(filePath);
builder.append("buss").append("/");
builder.append(pid).append("/");
String saveFileUrl = builder.toString();
String modelPath = saveFileUrl+"model.docx";
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.eq("EDIT_TYPE","node");
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper);
String newFileName = "";
try {
if(!hisList.isEmpty()){
newFileName = fileSavePath+taskId + "_" + pid + "_count." + fileSuffix;
String changeFile = filePath + newFileName;
for (int i = 0; i < hisList.size(); i++) {
if(i == 0){
PoiWord.wordRedDocument(filePath+hisList.get(i).getEditFilePath(),null,changeFile,modelPath);
}else {
PoiWord.wordRedDocument(filePath+hisList.get(i).getEditFilePath(),null,changeFile,changeFile);
}
}
}
}catch (Exception e){
logger.error(e.getMessage());
}
return newFileName;
}
@Override
public String saveBussModelFile(String pid, String taskId){
return saveProcessFile(filePath,pid,taskId,"docx");
}
@Override
public void saveBussTemplateFile(JSONObject object,String pid){
PoiWord.writeWordModel(filePath, object, pid);
}
/**
* 企标流程文件存储
* @param pid
* @param taskId
* @param fileSuffix
* @param filePath 文件存储路径
* @throws IOException
*/
public String saveProcessFile(String filePath,String pid,String taskId,String fileSuffix){
String fileSavePath = "bussEdit"+ getUUIDPath(pid,taskId);
String newFileName = "";
try {
File dir = new File(fileSavePath);
if (!dir.exists()) {
dir.mkdirs();
}
newFileName = fileSavePath + taskId + "_" + pid + "_node." + fileSuffix;
File saveFile = new File(filePath + newFileName);
FileUtils.write(saveFile, "","UTF-8");
}catch (Exception e){
logger.error(e.getMessage(),e);
}
return newFileName;
}
public static String getUUIDPath(String pid,String taskId){
StringBuilder builder=new StringBuilder();
builder.append("/");
builder.append(pid).append("/");
// builder.append(taskId).append("/");
return builder.toString();
}
@Override
public BusProcessModelHis modelHisOneUpdStatusById(String id){
BusProcessModelHis modelHis = new BusProcessModelHis();
modelHis.setId(id);
modelHis.setEditStatus("1");
this.baseMapper.updateById(modelHis);
return modelHis;
}
@Override
public BusProcessModelHis modelHisOneUpdStatus(String pid,String taskId){
BusProcessModelHis modelHis = new BusProcessModelHis();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.eq("TASK_ID",taskId);
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper);
if(!hisList.isEmpty()){
modelHis = hisList.get(0);
modelHis.setEditStatus("1");
this.baseMapper.updateById(modelHis);
}
return modelHis;
}
@Override
public BusProcessModelHis modelHisOneCount(String pid){
BusProcessModelHis modelHis = new BusProcessModelHis();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.eq("EDIT_TYPE","count");
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper);
if(!hisList.isEmpty()){
modelHis = hisList.get(0);
StringBuffer downloadFileUrl = new StringBuffer();
downloadFileUrl.append(downloadUrl).append(modelHis.getEditFilePath() == null ? "" : modelHis.getEditFilePath());
modelHis.setDownLoadUrl(downloadFileUrl.toString());
}
return modelHis;
}
@Override
public BusProcessModelHis processEditFile(String id){
BusProcessModelHis modelHis = this.baseMapper.selectById(id);
if(StringUtils.isNotBlank(modelHis.getId())){
StringBuffer downloadFileUrl = new StringBuffer();
downloadFileUrl.append(downloadUrl).append(modelHis.getEditFilePath() == null ? "" : modelHis.getEditFilePath());
modelHis.setDownLoadUrl(downloadFileUrl.toString());
}
return modelHis;
}
@Override
public BusProcessModelHis modelHisOne(String pid,String taskId){
BusProcessModelHis modelHis = new BusProcessModelHis();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
wrapper.eq("TASK_ID",taskId);
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper);
if(!hisList.isEmpty()){
modelHis = hisList.get(0);
StringBuffer downloadFileUrl = new StringBuffer();
downloadFileUrl.append(downloadUrl).append(modelHis.getEditFilePath() == null ? "" : modelHis.getEditFilePath());
modelHis.setDownLoadUrl(downloadFileUrl.toString());
}
return modelHis;
}
@Override
public List<BusProcessModelHis> modelHisList(String pid){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID",pid);
return this.baseMapper.selectList(wrapper);
}
}
@@ -1,5 +1,6 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.ydw.bat.wkflow.business_activiti.dto.TaskCommonQuery;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessNameMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
@@ -28,4 +29,18 @@ public class BusProcessNameServiceImpl extends ServiceImpl<BusProcessNameMapper,
return busProcessNameMapper.findBusProcessNameForEnd(taskId);
}
@Override
public List<BusProcessName> todoTask(TaskCommonQuery taskCommonQuery) {
return busProcessNameMapper.todoTask(taskCommonQuery);
}
@Override
public String delDB(List<String> id) {
if (busProcessNameMapper.deleteBatchIds(id)>0) {
return "success";
}else {
return "error";
}
}
}
@@ -68,4 +68,25 @@ public class BusProcessNewServiceImpl extends ServiceImpl<BusProcessNewMapper, B
public List<BusProcessNew> findNoExecuteBusProcessNewForEnd(List<String> taskIdList) {
return baseMapper.findNoExecuteBusProcessNewForEnd(taskIdList);
}
@Override
public List<BusProcessNew> findLastworkPeople(String key, String pId) {
return baseMapper.findLastworkPeople(key,pId);
}
@Override
public List<BusProcessNew> findLastworkPeople2(String key, String pId) {
return baseMapper.findLastworkPeople2(key,pId);
}
@Override
public List<BusProcessNew> everyDayTenOlock() {
return baseMapper.everyDayTenOlock();
}
@Override
public List<BusProcessNew> everyDayTenOlockSAM() {
return baseMapper.everyDayTenOlockSAM();
}
}
@@ -0,0 +1,86 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation;
import com.ydw.bat.wkflow.business_main.datas.mapper.EsPrcRelationMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class EsPrcRelationServiceImpl extends ServiceImpl<EsPrcRelationMapper, EsPrcRelation> implements IEsPrcRelationService {
@Override
public List<EsPrcRelation> list(String esId) {
QueryWrapper<EsPrcRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(EsPrcRelation::getEsId, esId);
return this.baseMapper.selectList(queryWrapper);
}
@Override
public Boolean listJudge(EsPrcRelation esPrcRelation) {
QueryWrapper<EsPrcRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(EsPrcRelation::getEsId, esPrcRelation.getEsId());
queryWrapper.lambda().eq(EsPrcRelation::getOaFlag, esPrcRelation.getOaFlag());
queryWrapper.lambda().eq(EsPrcRelation::getPrcIdGk, esPrcRelation.getPrcIdGk());
List<EsPrcRelation> list = this.baseMapper.selectList(queryWrapper);
if (list != null && !list.isEmpty()) {
return true;
} else {
return false;
}
}
@Override
public int addEsPrcRelation(String esId, String prcId, String prcIdGk) {
EsPrcRelation esPrcRelation = new EsPrcRelation();
esPrcRelation.setEsId(esId);
esPrcRelation.setOaFlag("1"); // 待办
Date date = new Date();
esPrcRelation.setCreateTime(date);
esPrcRelation.setUpdateTime(date);
if (StringUtils.isNotBlank(prcId)) {
esPrcRelation.setPrcId(prcId);
}
if (StringUtils.isNotBlank(prcIdGk)) {
esPrcRelation.setPrcIdGk(prcIdGk);
}
return this.baseMapper.insert(esPrcRelation);
}
@Override
public int modifyEsPrcRelation(String esId, String prcId, String oaFlag, String prcIdGk) {
EsPrcRelation esPrcRelation = new EsPrcRelation();
esPrcRelation.setEsId(esId);
Date date = new Date();
esPrcRelation.setUpdateTime(date);
if (StringUtils.isNotBlank(oaFlag)) {
esPrcRelation.setOaFlag(oaFlag);
}
if (StringUtils.isNotBlank(prcId)) {
esPrcRelation.setPrcId(prcId);
}
if (StringUtils.isNotBlank(prcIdGk)) {
esPrcRelation.setPrcIdGk(prcIdGk);
}
QueryWrapper<EsPrcRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(EsPrcRelation::getEsId, esPrcRelation.getEsId());
return this.baseMapper.update(esPrcRelation, queryWrapper);
}
@Override
public int delEsPrcRelation(String esId) {
QueryWrapper<EsPrcRelation> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(EsPrcRelation::getEsId, esId);
return this.baseMapper.delete(queryWrapper);
}
}
@@ -0,0 +1,12 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_main.datas.entity.EsTechRelation;
import com.ydw.bat.wkflow.business_main.datas.mapper.EsTechRelationMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IEsTechRelationService;
import org.springframework.stereotype.Service;
@Service
public class EsTechRelationServiceImpl extends ServiceImpl<EsTechRelationMapper, EsTechRelation> implements IEsTechRelationService {
}
@@ -0,0 +1,156 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import org.activiti.engine.HistoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.task.Task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec;
import com.ydw.bat.wkflow.business_main.datas.mapper.OaTaskExecMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_mq.service.CreateMQService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <p>
* OA 干活任务执行表 服务实现类
* </p>
*
* @author Super_liu
* @since 2021-09-24
*/
@Service
public class OaTaskExecServiceImpl extends ServiceImpl<OaTaskExecMapper, OaTaskExec> implements IOaTaskExecService {
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private CreateMQService oaService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
@Autowired
private IBusProcessNewService iBusProcessNewService;
@Override
public String endTime(String pId){
String endTime = "";
HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(pId).orderByTaskCreateTime().asc();
List<HistoricTaskInstance> list = historicTaskInstanceQuery.list();
if(!list.isEmpty()){
QueryWrapper queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("TASK_ID",list.get(0).getId());
queryWrapper1.eq("P_ID",pId);
List<BusProcessNew> processNews = iBusProcessNewService.list(queryWrapper1);
if(!processNews.isEmpty()){
JSONObject object = JSONObject.parseObject(processNews.get(0).getMesg());
endTime = object.getString("endTime");
}else {
if(list.size() >1){
QueryWrapper queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("TASK_ID",list.get(1).getId());
queryWrapper2.eq("P_ID",pId);
List<BusProcessNew> processNews1 = iBusProcessNewService.list(queryWrapper2);
if(!processNews1.isEmpty()){
JSONObject object = JSONObject.parseObject(processNews1.get(0).getMesg());
endTime = object.getString("endTime");
}
}
}
}
return endTime;
}
@Override
public Map<String,Object> execTask(String todoId){
Map<String,Object> map = new TreeMap<>();
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",todoId);
wrapper.eq("EXEC_TYPE",2);
List<OaTaskExec> taskExecs = oaTaskExecService.list(wrapper);
if(!taskExecs.isEmpty()){
OaTaskExec oaTaskExec = taskExecs.get(0);
BusProcessNew object = JSONObject.parseObject(oaTaskExec.getMesg(),BusProcessNew.class);
int days = Utils.subDayNum(oaTaskExec.getEndTime());
if(days > 3){
// 3天外处理 更改执行状态 1 进入定时任务 不发送OA待办
updateOaTaskExec(taskExecs,1,2);
// 但发送OA已办 接受任务 置为已办
Task task = taskService.createTaskQuery().taskId(object.getTaskId()).singleResult();
webServiceOAService.completeOA(task);
getSuccess(map, "0", "操作成功");
}else {
if(days < 0){
// 超时处理
updateOaTaskExec(taskExecs,0,3);
Task task = taskService.createTaskQuery().taskId(object.getTaskId()).singleResult();
webServiceOAService.completeOA(task);
// 直接发送OA待办 重置任务状态 0
object.setTaskStatus(0);
oaService.sendTodoMq(object);
getSuccess(map, "0", "操作成功");
}else {
// 3天内处理
updateOaTaskExec(taskExecs,0,1);
Task task = taskService.createTaskQuery().taskId(object.getTaskId()).singleResult();
webServiceOAService.completeOA(task);
// 直接发送OA待办 重置任务状态 0
object.setTaskStatus(0);
oaService.sendTodoMq(object);
getSuccess(map, "0", "操作成功");
}
}
}
return map;
}
private void getSuccess(Map<String, Object> map, String sign, String message) {
map.put("sign",sign);
map.put("message",message);
}
private void updateOaTaskExec(List<OaTaskExec> taskExecs, int execStatus, int execType){
List<OaTaskExec> updateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
updateList.addAll(taskExecs);
updateList.forEach(taskExec -> {
// 任务修改为 启动状态
taskExec.setExecStatus(execStatus);
taskExec.setExecType(execType);
taskExec.setUpdateTime(sdf.format(new Date()));
});
oaTaskExecService.updateBatchById(updateList);
}
}
@@ -0,0 +1,24 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.ISendTodoLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* OA日志表 服务实现类
* </p>
*
* @author super_liu
* @since 2021-09-17
*/
@Service
public class SendTodoLogServiceImpl extends ServiceImpl<SendTodoLogMapper, SendTodoLog> implements ISendTodoLogService {
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
}
@@ -0,0 +1,20 @@
package com.ydw.bat.wkflow.business_main.datas.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ydw.bat.wkflow.business_main.datas.entity.TbTask;
import com.ydw.bat.wkflow.business_main.datas.mapper.TbTaskMapper;
import com.ydw.bat.wkflow.business_main.datas.service.ITbTaskService;
import org.springframework.stereotype.Service;
/**
* <p>
* 动态定时任务表 服务实现类
* </p>
*
* @author super_liu
* @since 2022-05-27
*/
@Service
public class TbTaskServiceImpl extends ServiceImpl<TbTaskMapper, TbTask> implements ITbTaskService {
}
@@ -0,0 +1,62 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Component
public class CreateMQService {
@Autowired
private AmqpTemplate rabbitTemplate;
@Value("${oa.flag}")
private Boolean oaFlag;
/**
* @author: super_liu
* @date: 2021年09月17日 14:40
**/
public void setTodoDeleteMq(String object){
if(oaFlag){
//发送消息队列
this.rabbitTemplate.convertAndSend("sendDelete-exchange_MQ_GSAR", "sendDelete-key_MQ_GSAR", object);
}
}
/**
* @author: super_liu
* @date: 2021年09月17日 14:40
**/
public void setTodoDoneMq(NotifyTodoSendContext object){
if(oaFlag){
//发送消息队列
this.rabbitTemplate.convertAndSend("sendDone-exchange_MQ_GSAR_RELEASE", "sendDone-key_MQ_GSAR_RELEASE", object);
}
}
/**
* @author: super_liu
* @date: 2021年09月17日 14:40
**/
public void sendTodoMq(BusProcessNew object){
if(oaFlag) {
//发送消息队列
this.rabbitTemplate.convertAndSend("send-exchange_MQ_GSAR_RELEASE", "send-key_MQ_GSAR_RELEASE", object);
}
}
}
@@ -0,0 +1,181 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.ISendTodoLogService;
import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppDeleteResult;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
public class SendDeleteMQService {
private static final Logger logger = LoggerFactory.getLogger(SendDeleteMQService.class);
@Autowired
private CreateMQService convertMq;
@Autowired
private EmailUtils emailUtils;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQDelete_SQ_GSAR", durable = "true"),
exchange = @Exchange(value = "sendDelete-exchange_MQ_GSAR", ignoreDeclarationExceptions = "true"),
key = "sendDelete-key_MQ_GSAR"))
public void createMQDone(String object, Message message, Channel channel) throws Exception{
try{
try{
Thread.sleep(5000);
insertOrUpdateInfo(object);
}catch(InterruptedException e){
logger.error(e.toString());
Thread.currentThread().interrupt();
}
} catch (Exception e) {
logger.error("消息队列进入添加数据方法前失败!");
logger.error(e.getMessage(),e);
}finally {
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag,false);
logger.debug("消息确认成功!!!!!!!!!");
}
}
public void insertOrUpdateInfo(String object) throws Exception {
Map<String,Object> objectMap = JSONObject.fromObject(object);
String todoId = objectMap.get("todoId").toString();
try {
NotifyTodoAppDeleteResult todoAppResult = webServiceOAService.setTodoDelete(object);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(todoAppResult.getSign().equals("0") || todoAppResult.getMassage().equals("操作成功")){
logger.info("--------------------------成功删除 ESP 已办任务----------------------------");
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",todoId);
wrapper.eq("MSG_TYPE","3");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
if(!list.isEmpty()) {
SendTodoLog sendTodoLog = list.get(0);
sendTodoLog.setOperMesg(todoAppResult.getMassage());
sendTodoLog.setMsgStatus("3");
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.updateById(sendTodoLog);
}else {
sendTodoSave(object,todoId, sdf, "2",todoAppResult.getMassage());
}
}else {
logger.error("ESP 发送删除任务异常 :" + "SIGN: "+todoAppResult.getSign()+",MASSAGE: "+todoAppResult.getMassage());
// 重试发送待办
logger.info("重试发送待办");
this.restartSendMq(object,todoId,todoAppResult.getMassage());
}
}catch (Exception e){
logger.error(e.getMessage(),e);
this.restartSendMq(object,todoId, e.getMessage());
}
}
public void restartSendMq(String object,String todoId,String operMesg) throws Exception{
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",todoId);
wrapper.eq("MSG_TYPE","3");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(!list.isEmpty()){
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
// 发送待办 或 发送给管理员邮箱
logger.info("发送失败6次,发送给管理员邮箱");
List<String> emailList = new ArrayList<>();
ResponseMessage<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 占时指定admin用户邮箱
emailList.add(byId == null ? "" : (byId.getData().getEmail() != null ? byId.getData().getEmail() : ""));
String[] arr = emailList.toArray(new String[emailList.size()]);
String title = "OA请求发送失败6次";
String countText = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
}else {
restSendDoneTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
}
}else {
sendTodoSave(object,todoId, sdf, "3",operMesg);
}
}
private void restSendDoneTodo(String object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew,String operMesg) throws Exception{
// 发送失败连续持续3次, 如果在失败等待1个小时后重试3次
if(againNumNew < 6){
Thread.sleep(3000);
logger.info("发送失败连续持续"+againNumNew+"次,存入延迟重试队列!!!!!!!!!");
}else {
logger.info("发送失败连续持续"+againNumNew+"次!!");
}
sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1);
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setOperMesg(operMesg);
sendTodoLogMapper.updateById(sendTodoLog);
convertMq.setTodoDeleteMq(object);
logger.info("已重新加入延迟队列");
}
private void sendTodoSave(String object, String todoId, SimpleDateFormat sdf, String s,String operMesg) {
SendTodoLog sendTodoLog = new SendTodoLog();
sendTodoLog.setMsgType("3");
sendTodoLog.setTodoId(todoId);
sendTodoLog.setMesg(object);
sendTodoLog.setMsgStatus(s);
sendTodoLog.setErrNum(1);
sendTodoLog.setOperMesg(operMesg);
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.insert(sendTodoLog);
if(s.equals("2")){
logger.info("发送成功,存入OA日志");
}else{
convertMq.setTodoDeleteMq(object);
logger.info("已重新加入延迟队列");
}
}
}
@@ -0,0 +1,179 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage;
import com.ydw.bat.wkflow.business_main.datas.entity.SendTodoLog;
import com.ydw.bat.wkflow.business_main.datas.entity.UserVO;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class SendDoneMQService {
private static final Logger logger = LoggerFactory.getLogger(SendDoneMQService.class);
@Autowired
private CreateMQService convertMq;
@Autowired
private EmailUtils emailUtils;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQDone_SQ_GSAR_RELEASE", durable = "true"),
exchange = @Exchange(value = "sendDone-exchange_MQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"),
key = "sendDone-key_MQ_GSAR_RELEASE"))
public void createMQDone(NotifyTodoSendContext object, Message message, Channel channel) throws Exception{
try{
try{
Thread.sleep(5000);
insertOrUpdateInfo(object);
}catch(InterruptedException e){
logger.error(e.toString());
Thread.currentThread().interrupt();
}
} catch (Exception e) {
logger.error("消息队列进入添加数据方法前失败!");
logger.error(e.getMessage(),e);
}finally {
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag,false);
logger.debug("消息确认成功!!!!!!!!!");
}
}
public void insertOrUpdateInfo(NotifyTodoSendContext object) throws Exception {
try {
NotifyTodoAppResult todoAppResult = webServiceOAService.setTodoDone(object);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(todoAppResult.getSIGN().equals("0") || todoAppResult.getMASSAGE().equals("操作成功")){
logger.info("--------------------------成功发送 ESP 已办任务----------------------------");
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getModelId());
wrapper.eq("MSG_TYPE","1");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
if(!list.isEmpty()) {
SendTodoLog sendTodoLog = list.get(0);
sendTodoLog.setOperMesg(todoAppResult.getMASSAGE());
sendTodoLog.setMsgStatus("2");
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.updateById(sendTodoLog);
}else {
sendTodoSave(object, sdf, "2",todoAppResult.getMASSAGE());
}
}else {
logger.error("ESP 发送待办任务异常 :" + "SIGN: "+todoAppResult.getSIGN()+",MASSAGE: "+todoAppResult.getMASSAGE());
// 重试发送待办
logger.info("重试发送待办");
this.restartSendMq(object,todoAppResult.getMASSAGE());
}
}catch (Exception e){
logger.error(e.getMessage(),e);
this.restartSendMq(object, e.getMessage());
}
}
public void restartSendMq(NotifyTodoSendContext object,String operMesg) throws Exception{
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getModelId());
wrapper.eq("MSG_TYPE","1");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(!list.isEmpty()){
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
// 发送待办 或 发送给管理员邮箱
logger.info("发送失败6次,发送给管理员邮箱");
List<String> emailList = new ArrayList<>();
ResponseMessage<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 占时指定admin用户邮箱
emailList.add(byId == null ? "" : (byId.getData().getEmail() != null ? byId.getData().getEmail() : ""));
String[] arr = emailList.toArray(new String[emailList.size()]);
String title = "OA请求发送失败6次";
String countText = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
}else {
restSendDoneTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
}
}else {
sendTodoSave(object, sdf, "3",operMesg);
}
}
private void restSendDoneTodo(NotifyTodoSendContext object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew,String operMesg) throws Exception{
// 发送失败连续持续3次, 如果在失败等待1个小时后重试3次
if(againNumNew < 6){
Thread.sleep(3000);
logger.info("发送失败连续持续"+againNumNew+"次,存入延迟重试队列!!!!!!!!!");
}else {
logger.info("发送失败连续持续"+againNumNew+"次!!");
}
sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1);
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setOperMesg(operMesg);
sendTodoLogMapper.updateById(sendTodoLog);
convertMq.setTodoDoneMq(object);
logger.info("已重新加入延迟队列");
}
private void sendTodoSave(NotifyTodoSendContext object, SimpleDateFormat sdf, String s,String operMesg) {
SendTodoLog sendTodoLog = new SendTodoLog();
sendTodoLog.setMsgType("1");
JSONObject json = JSONObject.fromObject(object);
sendTodoLog.setTodoId(object.getModelId());
sendTodoLog.setMesg(json.toString());
sendTodoLog.setMsgStatus(s);
sendTodoLog.setErrNum(1);
sendTodoLog.setOperMesg(operMesg);
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setUserId(object.getUserId());
sendTodoLogMapper.insert(sendTodoLog);
if(s.equals("2")){
logger.info("发送成功,存入OA日志");
}else{
convertMq.setTodoDoneMq(object);
logger.info("已重新加入延迟队列");
}
}
}
@@ -0,0 +1,212 @@
package com.ydw.bat.wkflow.business_mq.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.rabbitmq.client.Channel;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import com.ydw.bat.wkflow.business_main.datas.mapper.SendTodoLogMapper;
import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService;
import com.ydw.bat.wkflow.business_oa.utils.EmailUtils;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.util.Utils;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class SendMQService {
private static final Logger logger = LoggerFactory.getLogger(SendMQService.class);
@Autowired
private CreateMQService convertMq;
@Autowired
private EmailUtils emailUtils;
@Autowired
private WebServiceOAService webServiceOAService;
@Autowired
private SendTodoLogMapper sendTodoLogMapper;
@Autowired
private IOaTaskExecService oaTaskExecService;
@Autowired
private LawsUserInfoService lawsUserInfoService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "createMQ_SQ_GSAR_RELEASE", durable = "true"),
exchange = @Exchange(value = "send-exchange_MQ_GSAR_RELEASE", ignoreDeclarationExceptions = "true"),
key = "send-key_MQ_GSAR_RELEASE"))
public void createMQ(BusProcessNew object, Message message, Channel channel) throws Exception{
try{
try{
Thread.sleep(5000);
if(object.getTaskStatus() == 2 && object.getEndTime() != null && StringUtils.isNotBlank(object.getEndTime())){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int days = Utils.subDayNum(object.getEndTime());
// 3 天 外
if(days > 3){
// 执行日期
String execTime = Utils.subDay(object.getEndTime(),3);
net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(object);
// 执行任务对象 默认存储
OaTaskExec oaTaskExec = new OaTaskExec();
oaTaskExec.setExecType(2);
oaTaskExec.setTodoId(object.getId());
oaTaskExec.setUserId(object.getUserId());
oaTaskExec.setMesg(json.toString());
oaTaskExec.setCreateTime(sdf.format(new Date()));
oaTaskExec.setUpdateTime(sdf.format(new Date()));
oaTaskExec.setExecTime(execTime);
oaTaskExec.setEndTime(object.getEndTime());
oaTaskExec.setExecStatus(0);
oaTaskExecService.save(oaTaskExec);
object.setPrcName(object.getPrcName());
// 3 天 外 发送 OA 接受待办
insertOrUpdateInfo(object);
}else {
// 3 天 内 发送 OA 待办
insertOrUpdateInfo(object);
}
}else {
// 正常逻辑发送 OA 待办
insertOrUpdateInfo(object);
}
}catch(InterruptedException e){
logger.error(e.toString());
Thread.currentThread().interrupt();
}
} catch (Exception e) {
logger.error("消息队列进入添加数据方法前失败!");
logger.error(e.getMessage(),e);
}finally {
Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(tag,false);
logger.debug("消息确认成功!!!!!!!!!");
}
}
public void insertOrUpdateInfo(BusProcessNew object) throws Exception {
try {
NotifyTodoAppResult todoAppResult = webServiceOAService.sendTodo(object);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(todoAppResult.getSIGN().equals("0") || todoAppResult.getMASSAGE().equals("操作成功")){
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getId());
wrapper.eq("MSG_TYPE","0");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
if(!list.isEmpty()) {
SendTodoLog sendTodoLog = list.get(0);
sendTodoLog.setMsgStatus("2");
sendTodoLog.setOperMesg(todoAppResult.getMASSAGE());
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.updateById(sendTodoLog);
}else {
sendTodoSave(object, sdf, "2",todoAppResult.getMASSAGE());
}
}else {
// 重试发送待办
logger.info("重试发送待办");
this.restartSendMq(object,todoAppResult.getMASSAGE());
}
}catch (Exception e){
logger.error(e.getMessage(),e);
this.restartSendMq(object, e.getMessage());
}
}
public void restartSendMq(BusProcessNew object,String operMesg) throws Exception{
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("TODO_ID",object.getId());
wrapper.eq("MSG_TYPE","0");
List<SendTodoLog> list = sendTodoLogMapper.selectList(wrapper);
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
if(!list.isEmpty()){
SendTodoLog sendTodoLog = list.get(0);
int againNumNew = Integer.valueOf(sendTodoLog.getErrNum());
if(againNumNew >= 6){
ResponseMessage<UserVO> byId = lawsUserInfoService.getById("WY8J26MH23");
// 发送待办 或 发送给管理员邮箱
List<String> emailList = new ArrayList<>();
// 占时指定admin用户邮箱
emailList.add(byId == null ? "" : (byId.getData().getEmail() == null ? "" : byId.getData().getEmail()));
String[] arr = emailList.toArray(new String[emailList.size()]);
String title = "OA请求发送失败6次";
String countText = "<div style=\"font-size:16px\" ><div><p>您好:</p></div>" +
"<span style=\"color:blue;\" >"+"OA请求发送失败6次,请线下协调处理"+"</span></div>";
emailUtils.sendMsgFeign(arr,title,countText);
logger.info("发送失败6次,发送给管理员邮箱");
}else {
restSendTodo(object, sdf, sendTodoLog, againNumNew,operMesg);
}
}else {
sendTodoSave(object, sdf, "3",operMesg);
}
}
private void restSendTodo(BusProcessNew object, SimpleDateFormat sdf, SendTodoLog sendTodoLog, int againNumNew,String operMesg) throws Exception{
// 失败次数小于6次,放入失败队列延迟消费
if((againNumNew < 6)){
Thread.sleep(3000);
logger.info("发送失败连续持续"+againNumNew+"次,存入延迟重试队列!!!!!!!!!");
}else {
logger.info("发送失败连续持续"+againNumNew+"次!!");
}
sendTodoLog.setErrNum(sendTodoLog.getErrNum()+1);
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLog.setOperMesg(operMesg);
sendTodoLogMapper.updateById(sendTodoLog);
convertMq.sendTodoMq(object);
logger.info("已重新加入延迟队列");
}
private void sendTodoSave(BusProcessNew object, SimpleDateFormat sdf, String s,String operMesg) {
SendTodoLog sendTodoLog = new SendTodoLog();
sendTodoLog.setMsgType("0");
sendTodoLog.setTodoId(object.getId());
sendTodoLog.setUserId(object.getUserId());
JSONObject json = JSONObject.fromObject(object);
sendTodoLog.setMesg(json.toString());
sendTodoLog.setMsgStatus(s);
sendTodoLog.setErrNum(1);
sendTodoLog.setOperMesg(operMesg);
sendTodoLog.setCreateTime(sdf.format(new Date()));
sendTodoLog.setUpdateTime(sdf.format(new Date()));
sendTodoLogMapper.insert(sendTodoLog);
if(s.equals("2")){
logger.info("发送成功,存入OA日志");
}else{
convertMq.sendTodoMq(object);
logger.info("已重新加入延迟队列");
}
}
}
@@ -0,0 +1,66 @@
package com.ydw.bat.wkflow.business_oa.common;
import com.ydw.bat.wkflow.business_oa.exception.CommonException;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.springframework.stereotype.Service;
import java.util.ResourceBundle;
/**
* @Description: TODO
* @author: super_liu
* @date: 2021年09月08日 14:40
*/
@Service
public class WebServiceConf {
/**
* 调用webservice 接口
*
* @param method 调用方法名
* @param params 接口传入参数
* @return
*/
public static synchronized Object[] invoke(String wsdlUrl, String method, Object[] params) throws Exception {
Object[] objectArr = null;
//创建动态客户端
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory
.newInstance();
Client client = dcf.createClient(wsdlUrl);
try {
//如果返回的address不是远程服务地址,重新制定地址
//添加发送请求拦截器
if (StringUtils.isEmpty(method)) {
throw new CommonException("cxf 调用webservice 执行方法名缺失:method 未传入");
}
// cxf 调用webservice method paramsStr
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); // 策略
httpClientPolicy.setConnectionTimeout(36000); //连接超时
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(10000); //接收超时
HTTPConduit http = (HTTPConduit) client.getConduit();
http.setClient(httpClientPolicy);
objectArr = client.invoke(method, params);
} catch (Exception e) {
throw new CommonException("cxf 调用webservice 执行错误:" + e.toString());
}finally {
client.close();
}
return objectArr;
}
}
@@ -0,0 +1,69 @@
package com.ydw.bat.wkflow.business_oa.config;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
@Configuration
public class OkHttpConfig {
@Bean
public X509TrustManager x509TrustManager() {
return new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
};
}
@Bean
public SSLSocketFactory sslSocketFactory() {
try {
//信任任何链接
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
return sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return null;
}
/**
* Create a new connection pool with tuning parameters appropriate for a single-user application.
* The tuning parameters in this pool are subject to change in future OkHttp releases. Currently
*/
@Bean
public ConnectionPool pool() {
return new ConnectionPool(200, 5, TimeUnit.MINUTES);
}
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory(), x509TrustManager())
.retryOnConnectionFailure(false)//是否开启缓存
.connectionPool(pool())//连接池
.connectTimeout(10L, TimeUnit.SECONDS)
.readTimeout(10L, TimeUnit.SECONDS)
.build();
}
}
@@ -0,0 +1,12 @@
package com.ydw.bat.wkflow.business_oa.exception;
/**
* 自定义简单异常
*
*/
public class CommonException extends RuntimeException {
public CommonException(String message) {
super(message);
}
}
@@ -0,0 +1,342 @@
package com.ydw.bat.wkflow.business_oa.utils;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.UnsupportedEncodingException;
@Component
public class EmailUtils {
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
* The Mail sender.
*/
@Autowired
JavaMailSenderImpl mailSender;
@Value("${mail.valid}")
private boolean mailValid;
@Value("${spring.mail.username}")
private String userName;
@Value("${spring.mail.password}")
private String mailPwd;
/**
* Send simple email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendSimpleEmail(String deliver,String personName, String receiver, String subject, String content) throws ServiceException {
if(mailValid){
String[] receivers = {receiver};
sendSimpleEmail(deliver,personName, receivers, null, subject, content);
}
}
/**
* Send simple email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendSimpleEmail(String deliver,String personName, String[] receiver, String[] carbonCopy, String subject, String content) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ... ");
try {
SimpleMailMessage message = new SimpleMailMessage();
personName=javax.mail.internet.MimeUtility.encodeText(personName);
message.setFrom(personName + "<"+deliver+">");
message.setTo(receiver);
if(carbonCopy!=null && carbonCopy.length>0){
message.setCc(carbonCopy);
}
message.setSubject(subject);
message.setText(content);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MailException e) {
logger.error("Send mail failed, error message is : {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
} catch (UnsupportedEncodingException e) {
logger.error("Send mail failed, error message is : {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/**
* Send html email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @throws ServiceException the service exception
*/
public void sendHtmlEmail(String deliver, String receiver, String subject, String content) throws ServiceException {
String[] receivers = {receiver};
sendHtmlEmail(deliver, receivers, null, subject, content, true);
}
/**
* Send html email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @param isHtml the is html
* @throws ServiceException the service exception
*/
public void sendHtmlEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send email ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
if (null != carbonCopy) {
messageHelper.setCc(carbonCopy);
}
messageHelper.setSubject(subject);
messageHelper.setText(content, isHtml);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send email success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send email failed, error message is {} \n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/**
* Send attachment file email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param content the content
* @param fileName the file name
* @param file the file
* @throws ServiceException the service exception
*/
public void sendAttachmentFileEmail(String deliver, String receiver, String subject, String content, String fileName, File file) throws ServiceException {
String[] receivers = {receiver};
sendAttachmentFileEmail(deliver, receivers, null, subject, content, true, fileName, file);
}
/**
* Send attachment file mail.
*
* @param deliver the deliver
* @param receiver the receiver
* @param carbonCopy the carbon copy
* @param subject the subject
* @param content the content
* @param isHtml the is html
* @param fileName the file name
* @param file the file
* @throws ServiceException the service exception
*/
public void sendAttachmentFileEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String content, boolean isHtml, String fileName, File file) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
messageHelper.setCc(carbonCopy);
messageHelper.setSubject(subject);
messageHelper.setText(content, isHtml);
messageHelper.addAttachment(fileName, file);
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send mail failed, error message is {}\n", e.getMessage());
logger.error(e.getMessage(),e);
throw new ServiceException(e.getMessage());
}
}
/* *//**
* Send template email.
*
* @param deliver the deliver
* @param receiver the receiver
* @param subject the subject
* @param template the template
* @param context the context
* @throws ServiceException the service exception
*//*
public void sendTemplateEmail(String deliver, String receiver, String subject, String template, Context context) throws ServiceException {
String[] receivers = {receiver};
sendTemplateEmail(deliver, receivers, null, subject, template, context);
}*/
/* *//**
* Send template mail.
* @throws ServiceException the service exception
*//*
public void sendTemplateEmail(String deliver, String[] receiver, String[] carbonCopy, String subject, String template, Context context) throws ServiceException {
long startTimestamp = System.currentTimeMillis();
logger.info("Start send mail ...");
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message);
String content = templateEngine.process(template, context);
messageHelper.setFrom(deliver);
messageHelper.setTo(receiver);
messageHelper.setCc(carbonCopy);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
mailSender.send(message);
logger.info("Send mail success, cost {} million seconds", System.currentTimeMillis() - startTimestamp);
} catch (MessagingException e) {
logger.error("Send mail failed, error message is {} \n", e.getMessage());
e.printStackTrace();
throw new ServiceException(e.getMessage());
}
}*/
@Async
public void sendMsg(String[] tos,String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(msg);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
@Async
public void sendMsgNew(String[] tos,String msg,String title){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(title);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
@Async
public void sendMsgFeign(String[] tos,String title, String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//邮件标题
message.setSubject(title);
//邮件内容
message.setText(msg);
try {
if (null != tos){
for (String to :tos){
sendHtmlEmail( userName, to, title, msg);
}
}
} catch (ServiceException e) {
e.printStackTrace();
}
}
@Async
public void sendMsgWithCC(String[] tos,String[] cc,String msg){
//创建简单邮件消息
SimpleMailMessage message = new SimpleMailMessage();
//谁发的
message.setFrom(userName);
//谁要接收
message.setTo(tos);
//抄送
message.setCc(cc);
//邮件标题
message.setSubject(msg);
//邮件内容
message.setText(msg);
try {
if(StringUtils.isBlank(mailPwd)){
mailSender.setPassword(null);
}
mailSender.send(message);
} catch (MailException e) {
logger.error(e.getMessage(),e);
}
}
}
@@ -0,0 +1,323 @@
package com.ydw.bat.wkflow.business_oa.utils;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Component
public class OkHttpUtil {
private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class);
@Autowired
private OkHttpClient okHttpClient;
/**
* get
*
* @param url 请求的url
* @param queries 请求的参数,在浏览器?后面的数据,没有可以传null
* @return
*/
public String get(String url, Map<String, String> queries, Map<String, String> headerParams) {
String responseBody = "";
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
if(headerParams != null){
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
}
Request request = requestBuilder.url(sb.toString())
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param params post form 提交的参数
* @return
*/
public String post(String url, Map<String, String> params, Map<String, String> headerParams) {
String responseBody = "";
FormBody.Builder builder = new FormBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
builder.add(key, params.get(key));
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
47
* 同步GET请求 带Authorization认证
48
*/
public String getAuthorization(String get_url, String json, String[] auth_base){
final String credential = Credentials.basic(auth_base[0], auth_base[1]);
String result = "";
String data_url = get_url + "?" + json;
Request request = new Request.Builder()
.url(data_url)
.header("Authorization", credential)
.get()
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return result;
}
/**
* Post请求 带Authorization认证
* */
public String postAuthorization(String get_url, HashMap<String, Object> getData, String[] authBase){
String result = "";
final String credential = Credentials.basic(authBase[0], authBase[1]);
RequestBody fromBody = generateParametersForPost(getData).build();
Request request = new Request.Builder()
.url(get_url)
.header("Authorization", credential)
.post(fromBody)
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return result;
}
//拼接参数
private static String generateParameters(HashMap<String, Object> parameters) {
String urlAttachment = "";
if(parameters.size()>0){
urlAttachment = "?";
Object[] keys = parameters.keySet().toArray();
for(Object key : keys)
urlAttachment += key.toString() + "=" + parameters.get(key).toString() + "&";
urlAttachment = urlAttachment.substring(0,urlAttachment.length()-1);
}
return urlAttachment;
}
//拼接参数用于POST请求
private static FormBody.Builder generateParametersForPost(HashMap<String, Object> parameters) {
FormBody.Builder builder = new FormBody.Builder();
if(parameters.size()>0){
Object[] keys = parameters.keySet().toArray();
for(Object key : keys){
Object ff = parameters.get(key);
String aa = parameters.get(key).toString();
builder.add(key.toString(),parameters.get(key).toString());
}
}
return builder;
}
/**
* 发送私密API请求
*
* @paramget_url请求地址
* @paramget_data 请求参数列表
* @return 返回JSON数据
*/
private String auth_get(){
String result = "";
String api_key = "apikey";
String api_secret = "apisecret";
//认证信息
String[] baseAuth = {api_key,api_secret};
//请求的URL的参数
HashMap<String, Object> get_data = new HashMap<>();
get_data.put("page","1"); //page参数
get_data.put("name","test"); //name参数
// result = getAuthorization("http://www.superl.org/page-about.html", get_data, baseAuth);
return result;
}
/**
* post
*
* @param url 请求的url
* @param headerParams post form 提交的参数
* @return
*/
public String postForJson(String url, String json, Map<String, String> headerParams){
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
String responseBody = "";
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(requestBody).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
return "okhttp post error >> ex = {} "+ e.getMessage();
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post 上传文件
*
* @param url
* @param params
* @param fileType
* @return
*/
public String postFile(String url, Map<String, Object> params, String fileType, Map<String, String> headerParams) {
String responseBody = "";
MultipartBody.Builder builder = new MultipartBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
if (params.get(key) instanceof File) {
File file = (File) params.get(key);
builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file));
continue;
}
builder.addFormDataPart(key, params.get(key).toString());
}
}
Request.Builder requestBuilder = new Request.Builder();
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.url(url).post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
}
@@ -0,0 +1,76 @@
package com.ydw.bat.wkflow.business_oa.webService.controller;
import java.text.SimpleDateFormat;
import java.util.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tmsps.fk.common.util.JsonUtil;
import com.ydw.bat.wkflow.business_activiti.dto.*;
import com.ydw.bat.wkflow.business_auth.LawsUserInfoService;
import com.ydw.bat.wkflow.business_main.datas.entity.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEntrustService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto;
import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService;
import org.activiti.engine.*;
import org.activiti.engine.history.*;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.tmsps.fk.common.base.action.BaseAction;
import com.tmsps.fk.common.util.ChkUtil;
import com.tmsps.fk.common.wrapper.WrapMapper;
import com.tmsps.fk.common.wrapper.Wrapper;
import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService;
import com.ydw.bat.wkflow.util.activiti.ActivitiTools;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@Api(description = "WebService管理")
@RestController
public class WebServiceOAController extends BaseAction {
@Autowired
private WebServiceOAService webServiceOAService;
@ApiOperation(value = "强制删除OA待办", notes = "强制删除OA待办")
@GetMapping("/deleteOAByMandatory")
public void deleteOAByMandatory(String todoId,String assignee) {
webServiceOAService.deleteOAByMandatory(todoId,assignee);
}
@ApiOperation(value = "发送待办接口(")
@PostMapping("/sendTodo")
public NotifyTodoAppResult sendTodo() throws Exception{
return webServiceOAService.sendTodo(new BusProcessNew());
}
}
@@ -0,0 +1,27 @@
package com.ydw.bat.wkflow.business_oa.webService.service;
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew;
import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppDeleteResult;
import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult;
import org.activiti.engine.task.Task;
import java.util.List;
public interface WebServiceOAService {
void deleteOAByPid(String pId);
void deleteOAByMandatory(String todoId,String assignee);
void deleteOAByTaskIdResetTodo(BusProcessNew busProcessNew,String assignee);
void completeOA(Task task);
NotifyTodoAppResult sendTodo(BusProcessNew busProcessNew) throws Exception;
NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception;
NotifyTodoAppDeleteResult setTodoDelete(String object) throws Exception;
}

Some files were not shown because too many files have changed in this diff Show More