Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/jeeplus/modules/act/web/ActTaskController.java
xs 5 gadi atpakaļ
vecāks
revīzija
d778847762
15 mainītis faili ar 339 papildinājumiem un 13 dzēšanām
  1. 13 6
      src/main/java/com/jeeplus/modules/act/service/ActTaskService.java
  2. 70 0
      src/main/java/com/jeeplus/modules/monitor/task/runTask.java
  3. 5 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/ConstructionMapper.java
  4. 6 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/xml/ConstructionMapper.xml
  5. 10 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/service/ConstructionService.java
  6. 10 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/entity/ConstructionProject.java
  7. 21 0
      src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/entity/MaterialModule.java
  8. 20 0
      src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/mapper/MaterialModuleMapper.java
  9. 130 2
      src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/mapper/xml/MaterialModuleMapper.xml
  10. 39 0
      src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/service/MaterialModuleService.java
  11. 1 0
      src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/web/MaterialModuleController.java
  12. 1 1
      src/main/java/com/jeeplus/modules/sg/picking/activiti/web/PickIngController.java
  13. 5 2
      src/main/webapp/webpage/modules/sg/materialmodule/activiti/PowerWhether.js
  14. 1 1
      src/main/webapp/webpage/modules/sg/materialmodule/activiti/materialModuleForm.js
  15. 7 1
      src/main/webapp/webpage/modules/sg/materialmodule/activiti/materialModuleForm.jsp

+ 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());

+ 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;
 	}
 

+ 10 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/entity/ConstructionProject.java

@@ -29,6 +29,8 @@ public class ConstructionProject extends DataEntity<ConstructionProject> {
     private Date arrangeTime;//  安排时间
     private Date specificTime;//  具体时间
     private String projectStatus;//  项目状态0-在项目中 1-在计划中
+    //标识,用于记录是否发起了竣工流程
+    private Integer endFlag;
 
     public String getCityCompany() {
         return cityCompany;
@@ -207,4 +209,12 @@ public class ConstructionProject extends DataEntity<ConstructionProject> {
     public void setProjectStatus(String projectStatus) {
         this.projectStatus = projectStatus;
     }
+
+    public Integer getEndFlag() {
+        return endFlag;
+    }
+
+    public void setEndFlag(Integer endFlag) {
+        this.endFlag = endFlag;
+    }
 }

+ 21 - 0
src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/entity/MaterialModule.java

@@ -16,6 +16,11 @@ public class MaterialModule extends ActEntity<MaterialModule> {
     private String projectName;
     // 手动填写的项目类型,包含非涉电项目才会有项目类型
     private String projectType;
+    //记录当前应该查询的项目信息
+    private String nowProjectName;
+    //记录第几次发电
+    private Integer frequency;
+
 
     @Override
     public String getProcInsId() {
@@ -58,4 +63,20 @@ public class MaterialModule extends ActEntity<MaterialModule> {
     public void setProjectType(String projectType) {
         this.projectType = projectType;
     }
+
+    public String getNowProjectName() {
+        return nowProjectName;
+    }
+
+    public void setNowProjectName(String nowProjectName) {
+        this.nowProjectName = nowProjectName;
+    }
+
+    public Integer getFrequency() {
+        return frequency;
+    }
+
+    public void setFrequency(Integer frequency) {
+        this.frequency = frequency;
+    }
 }

+ 20 - 0
src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/mapper/MaterialModuleMapper.java

@@ -6,6 +6,7 @@ package com.jeeplus.modules.sg.materialmodule.activiti.mapper;
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
 import com.jeeplus.modules.sg.advence.activiti.entity.Advance;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
 import com.jeeplus.modules.sg.materialmodule.activiti.entity.MaterialModule;
 import org.apache.ibatis.annotations.Param;
 
@@ -33,4 +34,23 @@ public interface MaterialModuleMapper extends BaseMapper<MaterialModule> {
     //查找登录名id
     List<String> findUserId(@Param("list") List<String> list);
 
+    ConstructionProject findProject(String projectName);
+
+    void conProject(ConstructionProject constructionProject);
+
+    //查询当月所有的计划项目信息
+    List<ConstructionProject> findMonthProject();
+
+    //根据list<项目名>查询所有的流程项目信息
+    List<MaterialModule> findMaterialProject(List<ConstructionProject> list);
+
+    //修改计划项目的是否竣工状态
+    void updateEndFlag(String projectName);
+
+    //根据流程是列id获取流程信息
+    MaterialModule getModuleById(String procInsId);
+
+    //根据流程实列id修改项目记录领料次数信息
+    void updateModuleById(MaterialModule module);
+
 }

+ 130 - 2
src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/mapper/xml/MaterialModuleMapper.xml

@@ -56,7 +56,8 @@
 			user_name,
 			project_id,
 			project_name,
-			project_type
+			project_type,
+			frequency
 		)values
 			(
 			#{id},
@@ -70,7 +71,8 @@
 			#{userName},
 			#{projectId},
 			#{projectName},
-			#{projectType}
+			#{projectType},
+			#{frequency}
 			)
 	</insert>
 
@@ -95,4 +97,130 @@
 			</foreach>
 		 )
 	</select>
+
+	<select id="findProject" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject">
+		select id
+		, create_by
+		, create_date
+		, update_by
+		, update_date
+		, del_flag
+		, remarks
+		, cityCompany
+		, countyCompany
+		, projectNature
+		, powerSupplyArea
+		, gridNumber
+		, cellNumber
+		, reserveNumber
+		, projectName
+		, projectNumber
+		, substationName
+		, lineName
+		, projectType
+		, instructions
+		, workAreaNote
+		, contructiveContent
+		, costEstimate
+		, whetherGraceProject
+		, projectNote
+		, constructionUnit
+		, arrangeTime
+		, specificTime
+		, projectStatus
+		from ms_construction_project
+		where projectName = #{projectName}
+	</select>
+
+	<insert id="conProject">
+		  INSERT INTO ms_construction_project(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			cityCompany,
+			countyCompany,
+			projectNature,
+			powerSupplyArea,
+			gridNumber,
+			cellNumber,
+			reserveNumber,
+			projectName,
+			projectNumber,
+			substationName,
+			lineName,
+			projectType,
+			instructions,
+			workAreaNote,
+			contructiveContent,
+			costEstimate,
+			whetherGraceProject,
+			projectNote,
+			constructionUnit,
+			arrangeTime,
+			specificTime,
+			projectStatus,
+			endFlag
+		) VALUES
+		(
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{cityCompany},
+			#{countyCompany},
+			#{projectNature},
+			#{powerSupplyArea},
+			#{gridNumber},
+			#{cellNumber},
+			#{reserveNumber},
+			#{projectName},
+			#{projectNumber},
+			#{substationName},
+			#{lineName},
+			#{projectType},
+			#{instructions},
+			#{workAreaNote},
+			#{contructiveContent},
+			#{costEstimate},
+			#{whetherGraceProject},
+			#{projectNote},
+			#{constructionUnit},
+			#{arrangeTime},
+			#{specificTime},
+			#{projectStatus},
+			0
+		)
+	</insert>
+
+	<select id="findMonthProject" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject">
+		select projectName,endFlag from ms_construction_project where DATE_FORMAT( arrangeTime, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' )
+	</select>
+
+	<select id="findMaterialProject" resultType="com.jeeplus.modules.sg.materialmodule.activiti.entity.MaterialModule">
+		select id,proc_ins_id, user_name, project_id, project_name, project_type from sg_construction_process where project_name
+		(
+			<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
+				#{item.projectName}
+			</foreach>
+		)
+	</select>
+
+	<update id="updateEndFlag">
+		update ms_construction_project set endFlag = 1 where projectName = #{projectName};
+	</update>
+
+	<select id="getModuleById" resultType="com.jeeplus.modules.sg.materialmodule.activiti.entity.MaterialModule">
+		select project_name,proc_ins_id,now_project_name,frequency from sg_construction_process where proc_ins_id = #{procInsId};
+	</select>
+
+	<update id="updateModuleById">
+		update sg_construction_process set frequency = #{frequency},now_project_name=#{nowProjectName} where proc_ins_id = #{procInsId};
+	</update>
 </mapper>

+ 39 - 0
src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/service/MaterialModuleService.java

@@ -7,6 +7,7 @@ import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.sg.advence.activiti.entity.Advance;
 import com.jeeplus.modules.sg.advence.activiti.mapper.AdvanceMapper;
+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.mapper.MaterialModuleMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +48,44 @@ public class MaterialModuleService extends CrudService<MaterialModuleMapper, Mat
 		return materialModuleMapper.findUserId(list);
 	}
 
+	//根据项目名称获取项目计划数据
+	public ConstructionProject findProject(String projectName){
+		return materialModuleMapper.findProject(projectName);
+	}
+
+	//插入对应的计划信息
+	@Transactional(readOnly = false)
+	public void conProject(ConstructionProject constructionProject){
+		materialModuleMapper.conProject(constructionProject);
+	}
+
+	//查询当月所有的计划项目信息
+	public List<ConstructionProject> findMonthProject(){
+		return materialModuleMapper.findMonthProject();
+	}
+
+	//根据list<项目名>查询所有的流程项目信息
+	public List<MaterialModule> findMaterialProject(List<ConstructionProject> list){
+		return materialModuleMapper.findMaterialProject(list);
+	}
+
+	//修改计划项目的是否竣工状态
+	@Transactional(readOnly = false)
+	public void updateEndFlag(String projectName){
+		materialModuleMapper.updateEndFlag(projectName);
+	}
+
+	//根据流程是列id获取流程信息
+	public MaterialModule getModuleById(String procInsId){
+		return materialModuleMapper.getModuleById(procInsId);
+	}
+
+	//根据流程实列id修改项目记录领料次数信息
+	@Transactional(readOnly = false)
+	public void updateModuleById(MaterialModule module){
+		materialModuleMapper.updateModuleById(module);
+	}
+
 	@Transactional(readOnly = false)
 	@Override
 	public void save(MaterialModule entity) {

+ 1 - 0
src/main/java/com/jeeplus/modules/sg/materialmodule/activiti/web/MaterialModuleController.java

@@ -176,6 +176,7 @@ public class MaterialModuleController extends BaseController {
             //保存
             //修改项目的施工模块状态
             materialModule.setUserName(UserUtils.getUser().getLoginName());
+            materialModule.setFrequency(1);
             materialModuleService.save(materialModule);
             // 启动流程
             Map<String, Object> vars = Maps.newHashMap();

+ 1 - 1
src/main/java/com/jeeplus/modules/sg/picking/activiti/web/PickIngController.java

@@ -105,7 +105,7 @@ public class PickIngController extends BaseController {
      */
     @RequestMapping(value = "netExamine")
     public String netExamine(ShowList showList, Model model) {
-        model.addAttribute("showList", showList);
+        model.addAttribute("showLi  st", showList);
         ProjectNumber projectNumber = pickIngService.projectNumber(showList.getProcInsId());
         model.addAttribute("projectNumber",projectNumber);
         return "modules/sg/picking/activiti/netExamine";

+ 5 - 2
src/main/webapp/webpage/modules/sg/materialmodule/activiti/PowerWhether.js

@@ -171,9 +171,12 @@ $(document).ready(function() {
 					"comment":window.encodeURI(message)
 				},
 				function (data) {
-					if(data.success){
+					if (data.success) {
 						jp.success(data.msg);
-						jp.go("${ctx}/act/task/todo")
+						jp.go("${ctx}/act/task/todo");
+					} else {
+						jp.error(data.msg);
+						jp.go("${ctx}/act/task/todo");
 					}
 				})
 		});

+ 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>