Преглед на файлове

定时任务类,待办流程中新增流程项目信息,流程节点配置,配置字典类型

yue преди 5 години
родител
ревизия
d6116bb754

+ 13 - 6
src/main/java/com/jeeplus/modules/act/service/ActTaskService.java

@@ -115,7 +115,6 @@ public class ActTaskService extends BaseService {
 		List<HashMap<String,String>> result = new ArrayList<HashMap<String,String>>();
 		String userId = UserUtils.getUser().getLoginName();//ObjectUtils.toString(UserUtils.getUser().getId());
 
-
 		// =============== 已经签收的任务  ===============
 		TaskQuery todoTaskQuery = taskService.createTaskQuery().taskAssignee(userId).active()
 				.includeProcessVariables().orderByTaskCreateTime().desc();
@@ -124,15 +123,20 @@ public class ActTaskService extends BaseService {
 		if (StringUtils.isNotBlank(act.getProcDefKey())){
 			todoTaskQuery.processDefinitionKey(act.getProcDefKey());
 		}
+		//开始时间
 		if (act.getBeginDate() != null){
 			todoTaskQuery.taskCreatedAfter(act.getBeginDate());
 		}
+		//结束时间
 		if (act.getEndDate() != null){
 			todoTaskQuery.taskCreatedBefore(act.getEndDate());
 		}
 		if (!"".equals(xmName)&&xmName!=null) {
 			List<String> strings = constructionService.insIdByName(xmName);
-			if (strings!=null&&strings.size()>0) {
+			if (strings != null && strings.size() > 0) {
+				todoTaskQuery.processInstanceIdIn(strings);
+			} else {
+				strings.add("");
 				todoTaskQuery.processInstanceIdIn(strings);
 			}
 		}
@@ -193,11 +197,14 @@ public class ActTaskService extends BaseService {
 			map.put("task.processDefinitionId", task.getProcessDefinitionId());
 			map.put("task.processInstanceId", task.getProcessInstanceId());
 			String s = constructionService.idProjectName(task.getProcessInstanceId());
-			if ("".equals(s) || s == null) {
-				String s1 = constructionService.idProjectName2(task.getProcessInstanceId());
-				map.put("task.projectName", s1);
-			} else {
+			String s2 = constructionService.idProjectName3(task.getProcessInstanceId());
+			String s1 = constructionService.idProjectName2(task.getProcessInstanceId());
+			if (!"".equals(s) && s != null) {
 				map.put("task.projectName", s);
+			} else if (!"".equals(s1) && s1 != null){
+				map.put("task.projectName", s1);
+			} else if (!"".equals(s2) && s2 != null){
+				map.put("task.projectName", s2);
 			}
 			map.put("task.taskDefinitionKey", task.getTaskDefinitionKey());
 			map.put("vars",task.getProcessVariables());

+ 1 - 0
src/main/java/com/jeeplus/modules/act/web/ActTaskController.java

@@ -1616,6 +1616,7 @@ public class ActTaskController extends BaseController {
             //根据项目信息查询计划开工日期
             String projectName = materialModuleService.findProjectName(procInsId);
             Date specificTime = materialModuleService.findSpecificTime(projectName);
+            //通知发送人员
             String[] needUser = {"施工项目经理A"};
             List<String> listUserId = MyActiviUtils.getListUserId(needUser);
             List<String> userId = materialModuleService.findUserId(listUserId);

+ 70 - 0
src/main/java/com/jeeplus/modules/monitor/task/runTask.java

@@ -0,0 +1,70 @@
+package com.jeeplus.modules.monitor.task;
+
+import com.github.abel533.echarts.code.X;
+import com.jeeplus.common.utils.SpringContextHolder;
+import com.jeeplus.common.websocket.service.system.SystemInfoSocketHandler;
+import com.jeeplus.modules.monitor.entity.Task;
+import com.jeeplus.modules.oa.entity.OaNotify;
+import com.jeeplus.modules.oa.entity.OaNotifyRecord;
+import com.jeeplus.modules.oa.service.OaNotifyService;
+import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.materialmodule.activiti.entity.MaterialModule;
+import com.jeeplus.modules.sg.materialmodule.activiti.service.MaterialModuleService;
+import com.jeeplus.modules.sg.materialmodule.activiti.web.MaterialModuleController;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.quartz.DisallowConcurrentExecution;
+
+import javax.servlet.ServletContext;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+@DisallowConcurrentExecution  
+public class runTask extends Task{
+
+	@Override
+	public void run() {
+		MaterialModuleService materialModuleService = SpringContextHolder.getBean(MaterialModuleService.class);
+		OaNotifyService oaNotifyService = SpringContextHolder.getBean(OaNotifyService.class);
+		//查询出当月所有的计划项目的(项目名称,项目是否竣工)
+		List<ConstructionProject> monthProject = materialModuleService.findMonthProject();
+		String msg = "";
+		//判断项目是否竣工
+		for (ConstructionProject c : monthProject) {
+			if (c.getEndFlag()!=1) {
+				msg+=c.getProjectName()+":未完成竣工\n";
+			}
+		}
+		//设置需要发送通知的人员登陆名称
+		String[] needUser = {"施工项目经理A"};
+		//将人员名称数组转变为list
+		List<String> listUserId = MyActiviUtils.getListUserId(needUser);
+		//根据角色名查找用户id
+		List<String> userId = materialModuleService.findUserId(listUserId);
+		//将查询到的用户名list拼接为字符串
+		String stringJoiningTogether = MyActiviUtils.getStringJoiningTogether(userId);
+		//创建通知对象类
+		OaNotify oaNotify = new OaNotify();
+		//设置类型
+		oaNotify.setType("4");
+		oaNotify.setTitle("每月未竣工项目信息");
+		oaNotify.setStatus("1");
+		oaNotify.setOaNotifyRecordIds(stringJoiningTogether);
+		//根据流程实例id查询对应的项目信息(如果没有,发送通知,没有该项目计划信息)
+		if ("".equals(msg)) {
+			msg = "本月没有项目未完成竣工";
+		}
+		oaNotify.setContent(msg);
+		oaNotify.setCreateBy(UserUtils.get("1"));
+		oaNotify.setUpdateBy(UserUtils.get("1"));
+		oaNotifyService.save(oaNotify);
+		List<OaNotifyRecord> list = oaNotify.getOaNotifyRecordList();
+		for (OaNotifyRecord o : list) {
+			//发送通知到客户端
+			ServletContext context = SpringContextHolder.getBean(ServletContext.class);
+			new SystemInfoSocketHandler().sendMessageToUser(UserUtils.get(o.getUser().getId()).getLoginName(), "收到一条新通知,请到我的通知查看!");
+		}
+
+	}
+}

+ 5 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/ConstructionMapper.java

@@ -45,10 +45,15 @@ public interface ConstructionMapper extends BaseMapper<Construction> {
 
     String idProjectName2(@Param("procInsId") String procInsId);
 
+    //根据流程定义号查询项目需求名称
+    String idProjectName3(@Param("procInsId") String procInsId);
+
     List<String> insIdByName(String projectName);
 
     List<String> insIdByName2(String projectName);
 
+    List<String> insIdByName3(String projectName);
+
 
     void insertDisclose(Construction construction);
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/xml/ConstructionMapper.xml

@@ -274,6 +274,9 @@
 	<select id="idProjectName" resultType="string">
 		select project_name from xm_construction_clarificaiton where proc_ins_id = #{procInsId};
 	</select>
+	<select id="idProjectName3" resultType="string">
+		select project_name from sg_construction_process where proc_ins_id = #{procInsId};
+	</select>
 	<select id="findNameByInsID" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
 		select id,require_name from xm_project_details where id =  (select project_id from md_picking_application where proc_ins_id  = #{id})
 	</select>
@@ -286,6 +289,9 @@
 	<select id="insIdByName2" resultType="java.lang.String">
 		select proc_ins_id from md_acquisition_process where project_id  in(select id from xm_project_details where require_name like concat('%',#{projectName},'%'))
 	</select>
+	<select id="insIdByName3" resultType="java.lang.String">
+		select proc_ins_id from sg_construction_process where project_name like concat('%',#{projectName},'%')
+	</select>
 	<insert id="insertDisclose">
 		replace into xm_disclose_conclusion
 		(

+ 10 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/service/ConstructionService.java

@@ -12,6 +12,7 @@ import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.test.activiti.entity.OALeave;
 import com.jeeplus.modules.test.activiti.mapper.OALeaveMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -97,10 +98,19 @@ public class ConstructionService extends CrudService<ConstructionMapper, Constru
 		return s;
 	}
 
+	//根据流程定义号查询项目需求名称
+	public String idProjectName3(String procInsId) {
+		String s = constructionMapper.idProjectName3(procInsId);
+		return s;
+	}
+
+	//根据输入的项目名称,分别从流程表中查询对应的项目信息
 	public List<String> insIdByName(String projectName){
 		List<String> strings = constructionMapper.insIdByName(projectName);
 		List<String> strings1 = constructionMapper.insIdByName2(projectName);
+		List<String> strings2 = constructionMapper.insIdByName3(projectName);
 		strings.addAll(strings1);
+		strings.addAll(strings2);
 		return strings;
 	}
 

+ 1 - 1
src/main/webapp/webpage/modules/sg/materialmodule/activiti/materialModuleForm.js

@@ -20,7 +20,7 @@
 			var procDefId = $("#procDefId").val();
 			var projectId = $("#projectId").val();
 			var projectName = $("#projectName").val();
-			console.log(procDefId);
+			console.log(projectType)
 			if (projectType == "") {
 				jp.error("请正确填写项目类型");
 			} else {

+ 7 - 1
src/main/webapp/webpage/modules/sg/materialmodule/activiti/materialModuleForm.jsp

@@ -37,7 +37,13 @@
 							</tr>
 							<tr>
 								<td class="width-15 active"><label class="pull-right">填写项目类型:</label></td>
-								<td class="width-35"><input class="form-control" type="text" id="projectType"/></td>
+								<td>
+								<form:select path="projectType"  class="form-control m-b">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('sg_electricity_involved')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+								</td>
+<%--								<td class="width-35"><input class="form-control" type="text" id="projectType"/></td>--%>
 							</tr>
 							</tbody>
 						</table>