Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

chenyuesheng vor 3 Jahren
Ursprung
Commit
b01ba4960e

+ 64 - 0
src/main/java/com/jeeplus/modules/sealApplyFor/service/SealApplyForService.java

@@ -21,6 +21,7 @@ import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workactivity.dao.WorkActivityProcessDao;
 import com.jeeplus.modules.workactivity.entity.Activity;
 import com.jeeplus.modules.workactivity.entity.WorkActivityProcess;
 import com.jeeplus.modules.workactivity.service.ActivityService;
@@ -74,6 +75,8 @@ public class SealApplyForService extends CrudService<SealApplyForDao, SealApplyF
     private RuralProjectContactPersonService ruralProjectContactPersonService;
     @Autowired
     private RuralProjectRecordsService projectRecordsService;
+    @Autowired
+    private WorkActivityProcessDao workActivityProcessDao;
 
     public SealApplyForInfo get(String id) {
         SealApplyForInfo sealApplyForInfo = super.get(id);
@@ -638,6 +641,67 @@ public class SealApplyForService extends CrudService<SealApplyForDao, SealApplyF
 
 
 
+    @Transactional(readOnly = false)
+    public void cancelProcess(SealApplyForInfo sealApplyForInfo) throws Exception {
+        WorkActivityProcess process = new WorkActivityProcess();
+        process.setProcessInstanceId(sealApplyForInfo.getProcessInstanceId());
+        process.setIsApproval("0");
+        //List<WorkActivityProcess> processList1 = workActivityProcessService.findByProcInsId(process);
+        WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+        workActivityProcess.setProcessInstanceId(sealApplyForInfo.getProcessInstanceId());
+        List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+        WorkProjectNotify notify = new WorkProjectNotify();
+        notify.setNotifyId(sealApplyForInfo.getId());
+        List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+        if (userList!=null && userList.size()!=0) {
+            for (User u : userList) {
+                User user = UserUtils.get(u.getId());
+                /*List<WebSocket> toUserConns = ChatServerPool.getWebSocketByUser(u.getId());
+                for (WebSocket toUserConn : toUserConns) {
+                    String message = "{\"to\":\""+u.getId()+"\"," +
+                            "\"msg\":\"审批信息 申请人:"+ user.getName()+",项目登记审批:"+projectRecords.getProjectName() +" 强制撤销!\"," +
+                            "\"useType\":\"sys\"}";
+                    ChatServerPool.sendMessageToUser(toUserConn, message);//同时向本人发送消息
+                    //ChatServerPool.sendMessageToUser(toUserConn, u.getId() + "_sys_审批信息 " + "报销人:" + user.getName() + ",报销编号:" + workReimbursement.getNumber() + " 强制撤销!");//同时向本人发送消息
+                }*/
+                UserUtils.pushIm(u.getId(),"申请人 "+user.getName() +",盖章送审项目:"+sealApplyForInfo.getProjectRecords().getProjectName() +" 审批强制撤销!");
+            }
+        }
+        if(processList!=null && processList.size()>0) {
+            for (int i = 0; i < processList.size(); i++) {
+                WorkActivityProcess p = processList.get(i);
+                if (StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())) {
+                    p.setIsApproval("-1");
+                    p.setDelFlag("1");
+                    workActivityProcessDao.updateDelFlagAndIsApproval(p);
+                }
+            }
+            WorkActivityProcess pro = new WorkActivityProcess();
+            pro.setId("");
+            pro.setDelFlag("0");
+            pro.preInsert();
+            pro.setRemarks("[强制撤销]");
+            pro.setProcessKey(processList.get(0).getProcessKey());
+            pro.setIsApproval("1");
+            pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+            pro.setCount(0);
+            workActivityProcessDao.insert(pro);
+
+            //结束该流程,设为"撤销"状态月
+            SealApplyForInfo newSealApplyForInfo = new SealApplyForInfo();
+            newSealApplyForInfo.setId(sealApplyForInfo.getId());
+            newSealApplyForInfo.setStatus(ProjectStatusEnum.RECALL.getValue());
+            newSealApplyForInfo.preUpdate();
+            dao.updateProcessIdAndStatus(newSealApplyForInfo);
+            actTaskService.endProcessInstance(sealApplyForInfo.getProcessInstanceId(), "项目盖章送审-撤回");
+        }
+    }
+
+
+    @Transactional(readOnly = false)
+    public void delete(SealApplyForInfo sealApplyForInfo) {
+        super.delete(sealApplyForInfo);
+    }
 
 
 

+ 66 - 15
src/main/java/com/jeeplus/modules/sealApplyFor/web/SealApplyForController.java

@@ -23,7 +23,6 @@ import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import org.activiti.engine.HistoryService;
-import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.shiro.authz.annotation.Logical;
@@ -43,6 +42,7 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -228,10 +228,10 @@ public class SealApplyForController extends BaseController {
                     service.save(t, ProjectStatusEnum.TSTORE);//保存
                 }else if(t.getStatus() == 2){
                     addMessage(redirectAttributes, "盖章申请已送审,无法暂存");
-                    return "redirect:"+ Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                    return "redirect:"+ Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
                 }else if(t.getStatus() == 5){
                     addMessage(redirectAttributes, "盖章申请已登记完成,无法暂存");
-                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                    return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
                 }
             } else {//新增表单保存
                 service.save(sealApplyForInfo, ProjectStatusEnum.TSTORE);//保存
@@ -254,6 +254,11 @@ public class SealApplyForController extends BaseController {
             return form(sealApplyForInfo, model);
         }
         try {
+
+            if(null != sealApplyForInfo.getProjectRecords() || StringUtils.isNotBlank(sealApplyForInfo.getProjectRecords().getId())){
+                RuralProjectRecords projectRecords = projectRecordsService.get(sealApplyForInfo.getProjectRecords().getId());
+                sealApplyForInfo.setProjectRecords(projectRecords);
+            }
             if(null == sealApplyForInfo.getProjectRecords() || StringUtils.isBlank(sealApplyForInfo.getProjectRecords().getReviewerPersonId())){
                 addMessage(redirectAttributes, "未选择项目或该项目无审核人,无法申请盖章");
                 return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
@@ -261,20 +266,18 @@ public class SealApplyForController extends BaseController {
             if (!sealApplyForInfo.getIsNewRecord()) {//编辑表单保存
                 SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
                 MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
-                if(t.getStatus() == 1) {
-                    MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
-                    service.save(t, ProjectStatusEnum.IN_APRL);//保存
-                }else if(t.getStatus() == 2){
-                    addMessage(redirectAttributes, "盖章申请已送审,无法暂存");
-                    return "redirect:"+ Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                if(t.getStatus() == 2){
+                    addMessage(redirectAttributes, "盖章申请已送审,无法送审");
+                    return "redirect:"+ Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
                 }else if(t.getStatus() == 5){
-                    addMessage(redirectAttributes, "盖章申请已登记完成,无法暂存");
-                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectRecords/?repage";
+                    addMessage(redirectAttributes, "盖章申请已登记完成,无法送审");
+                    return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
                 }
+                service.save(t, ProjectStatusEnum.IN_APRL);//保存
             } else {//新增表单保存
                 service.save(sealApplyForInfo, ProjectStatusEnum.IN_APRL);//保存
             }
-            addMessage(redirectAttributes, "保存项目成功");
+            addMessage(redirectAttributes, "保存盖章申请成功");
         }catch (Exception e){
             logger.error("保存盖章申请异常:",e);
             addMessage(redirectAttributes, "保存盖章申请异常:"+e.getMessage());
@@ -283,6 +286,35 @@ public class SealApplyForController extends BaseController {
     }
 
 
+    @RequestMapping(value = "getProcess")
+    public String getProcess(SealApplyForInfo sealApplyForInfo, Model model, HttpServletRequest request) {
+        model.addAttribute("processInstanceId", sealApplyForInfo.getProcessInstanceId());
+        return "modules/ruralprojectrecords/ruralProjectRecordsTask";
+    }
+
+    @RequestMapping(value = "revoke")
+    public String revoke(HttpServletRequest request, RedirectAttributes redirectAttributes) {
+        HashMap<String, String> requestMap = findRequestMap(request);
+        String processInstanceId = requestMap.get("processInstanceId");
+        String id = requestMap.get("id");
+        //获取项目状态
+        Integer status = Integer.parseInt(requestMap.get("status"));
+        try {
+            SealApplyForInfo sealApplyForInfo = service.get(id);
+            if (sealApplyForInfo.getStatus() != status) {
+                addMessage(redirectAttributes, "盖章申请不是送审状态,无法撤回");
+                return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+            }
+            service.cancelProcess(sealApplyForInfo);
+            addMessage(redirectAttributes, "撤回该盖章申请成功");
+        } catch (Exception e) {
+            logger.info(e.getMessage());
+            addMessage(redirectAttributes, "撤回该盖章申请失败");
+        }
+        return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+    }
+
+
     /**
      * 报销list页面查询框
      */
@@ -319,8 +351,8 @@ public class SealApplyForController extends BaseController {
                                        RedirectAttributes redirectAttributes) {
         String home = sealApplyForInfo.getHome();
         try {
-            SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
-            MyBeanUtils.copyBeanNotNull2Bean(t,sealApplyForInfo);//将编辑表单中的非NULL值覆盖数据库记录中的值
+            /*SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
+            MyBeanUtils.copyBeanNotNull2Bean(t,sealApplyForInfo);//将编辑表单中的非NULL值覆盖数据库记录中的值*/
             // 对不同环节的业务逻辑进行操作
             List<User> users = null;
             User auditUser = null;
@@ -422,7 +454,6 @@ public class SealApplyForController extends BaseController {
 
     public Act getByAct(String processInstanceId){
         Act act = new Act();
-        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
         ProcessInstance processInstance = actTaskService.getProcIns(processInstanceId);
         if (processInstance!=null) {
             List<Task> taskList = actTaskService.getCurrentTaskList(processInstance);
@@ -449,4 +480,24 @@ public class SealApplyForController extends BaseController {
         }
         return  act;
     }
+
+    /**
+     * 删除盖章申请
+     */
+    @RequiresPermissions("sealApplyFor:sealApplyFor:del")
+    @RequestMapping(value = "delete")
+    public String delete(SealApplyForInfo sealApplyForInfo, RedirectAttributes redirectAttributes) throws Exception {
+        SealApplyForInfo t = service.get(sealApplyForInfo.getId());//从数据库取出记录的值
+        MyBeanUtils.copyBeanNotNull2Bean(sealApplyForInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+        if(t.getStatus() == 2){
+            addMessage(redirectAttributes, "盖章申请已送审,无法删除");
+            return "redirect:"+ Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+        }else if(t.getStatus() == 5){
+            addMessage(redirectAttributes, "盖章申请已登记完成,无法删除");
+            return "redirect:"+Global.getAdminPath()+"/sealApplyFor/sealApplyFor/?repage";
+        }
+        service.delete(sealApplyForInfo);
+        addMessage(redirectAttributes, "删除盖章申请成功");
+        return "redirect:" + Global.getAdminPath() + "/sealApplyFor/sealApplyFor/?repage";
+    }
 }

+ 62 - 5
src/main/resources/mappings/modules/sealApplyFor/SealApplyForDao.xml

@@ -100,6 +100,7 @@
 	<sql id="sealApplyForJoin">
 		left join sys_office so on so.id = a.office_id
 		left join sys_office sc on sc.id = a.company_id
+		left join sys_user sua on sua.id = a.create_by
 	</sql>
 
 	<sql id="projectJoin">
@@ -116,7 +117,7 @@
 		FROM seal_apply_for_info a
 		<include refid="sealApplyForJoin"/>
 		<include refid="projectJoin"/>
-		WHERE a.id = #{id}
+		WHERE a.id = #{id} and a.del_flag = 0
 	</select>
 
 	<select id="findList" resultType="com.jeeplus.modules.sealApplyFor.entity.SealApplyForInfo" >
@@ -128,9 +129,33 @@
 		<include refid="sealApplyForJoin"/>
 		<include refid="projectJoin"/>
 		<where>
+			a.del_flag = 0
+			<if test="projectRecords != null and projectRecords.id != null and projectRecords.id != ''">
+				AND a.project_id = #{projectRecords.id}
+			</if>
+			<if test="projectRecords != null and projectRecords.projectName != null and projectRecords.projectName != ''">
+				AND rpr.project_name  like concat('%',#{projectRecords.projectName},'%')
+			</if>
+			<if test="officeIdList!=null and officeIdList.size!=0">
+				and wa.office_id in
+				<foreach collection="officeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
+
+			<if test="createBy != null and((createBy.id != null and createBy.id != '') or (createBy.name != null and createBy.name != ''))">
+				AND (a.create_by = #{createBy.id} or sua.name like concat('%',#{createBy.name},'%'))
+			</if>
 
-			<if test="projectId != null and projectId != ''">
-				AND a.project_id like concat('%',#{projectId},'%')
+
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+			<if test="status != null and status != ''">
+				AND a.status = #{status}
 			</if>
 
 		</where>
@@ -149,8 +174,33 @@
 		SELECT count(DISTINCT a.id)
 		FROM seal_apply_for_info a
 		<where>
-			<if test="projectId != null and projectId != ''">
-				AND a.project_id like concat('%',#{projectId},'%')
+			and a.del_flag = 0
+			<if test="projectRecords != null and projectRecords.id != null and projectRecords.id != ''">
+				AND a.project_id = #{projectRecords.id}
+			</if>
+			<if test="projectRecords != null and projectRecords.projectName != null and projectRecords.projectName != ''">
+				AND rpr.project_name  like concat('%',#{projectRecords.projectName},'%')
+			</if>
+			<if test="officeIdList!=null and officeIdList.size!=0">
+				and wa.office_id in
+				<foreach collection="officeIdList" item="officeId" separator="," open="(" close=")">
+					#{officeId}
+				</foreach>
+			</if>
+
+			<if test="createBy != null and((createBy.id != null and createBy.id != '') or (createBy.name != null and createBy.name != ''))">
+				AND (a.create_by = #{createBy.id} or sua.name like concat('%',#{createBy.name},'%'))
+			</if>
+
+
+			<if test="beginDate !=null">
+				AND a.create_date >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.create_date &lt; #{endDate}
+			</if>
+			<if test="status != null and status != ''">
+				AND a.status = #{status}
 			</if>
 		</where>
 	</select>
@@ -309,4 +359,11 @@
 			</otherwise>
 		</choose>
 	</select>
+
+
+	<!--物理删除-->
+	<delete id="delete">
+		delete from seal_apply_for_info
+		WHERE id = #{id}
+	</delete>
 </mapper>

+ 19 - 18
src/main/webapp/webpage/modules/sealApplyFor/sealApplyForList.jsp

@@ -181,13 +181,26 @@
 																  title="登记人" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
 							</div>
 						</div>
-						<div class="layui-item query athird" style="width: 25%">
+
+						<div class="layui-item query athird " style="width: 25%">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block readOnlyFFF">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${sealApplyForInfo.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${sealApplyForInfo.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
+						<%--<div class="layui-item query athird" style="width: 25%">
 							<label class="layui-form-label">部门:</label>
 							<div class="layui-input-block with-icon">
 								<sys:treeselectMoHu id="officeId" name="office.id" value="${sealApplyForInfo.office.id}" labelName="office.name" labelValue="${sealApplyForInfo.office.name}"
 													title="部门" url="/sys/office/treeDataAll?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
 							</div>
-						</div>
+						</div>--%>
 
 						<div class="layui-item athird" style="width: 25%">
 							<div class="input-group">
@@ -203,18 +216,6 @@
 					<div id="moresees" style="clear:both;display:none;" class="lw6">
 
 						<div class="layui-item query athird ">
-							<label class="layui-form-label">创建时间:</label>
-							<div class="layui-input-block readOnlyFFF">
-								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-									   value="<fmt:formatDate value="${sealApplyForInfo.beginDate}" pattern="yyyy-MM-dd"/>"/>
-								</input>
-                                <span class="group-sep">-</span>
-                                <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-                                       value="<fmt:formatDate value="${sealApplyForInfo.endDate}" pattern="yyyy-MM-dd"/>"/>
-                                </input>
-							</div>
-						</div>
-						<div class="layui-item query athird ">
 							<label class="layui-form-label">状态:</label>
 							<div class="layui-input-block">
 								<form:select path="status" class=" form-control  simple-select">
@@ -262,10 +263,10 @@
             ,cols: [[
 				{checkbox: true, fixed: true},
                 {field:'index',align:'center', title: '序号',width:55}
-                ,{field:'projName',align:'center', title: '项目名称',width:250,templet:function(d){
+                ,{field:'projName',align:'center', title: '项目名称',minWidth:250,templet:function(d){
 						return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看信息', '${ctx}/sealApplyFor/sealApplyFor/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
                     }}
-				,{field:'projId',align:'center', title: '项目编号',  width:150}
+				,{field:'projId',align:'center', title: '项目编号',  width:180}
 				,{field: 'projectReportNumber', align:'center', title: '报告号',width:170,templet: function(d){
 						if(""!= d.projectReportNumber){
 							return d.projectReportNumber;
@@ -287,7 +288,7 @@
                 ,{align:'center', title: '状态',  width:90,templet:function(d){
                         var st = getruralProjectState(d.status);
                         if(st.action)
-                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectRecords/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/sealApplyFor/sealApplyFor/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else
                             var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         return xml;
@@ -310,7 +311,7 @@
                         }
                         if(d.candel != undefined && d.candel =="1")
                         {
-                            xml+="<a href=\"${ctx}/sealApplyFor/sealApplyFor/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要作废该盖章申请吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\"> 作废</a>";
+                            xml+="<a href=\"${ctx}/sealApplyFor/sealApplyFor/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该盖章申请吗?', this.href)\" class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
                         }
                         if(d.cancancel != undefined && d.cancancel =="1")
                         {