Api/src/main/java/com/java110/api/listener/auditOrder/ListAuditHistoryComplaintsListener.java
New file @@ -0,0 +1,100 @@ package com.java110.api.listener.auditOrder; import com.alibaba.fastjson.JSONObject; import com.java110.api.listener.AbstractServiceApiListener; import com.java110.core.annotation.Java110Listener; import com.java110.core.context.DataFlowContext; import com.java110.core.smo.complaintUser.IComplaintUserInnerServiceSMO; import com.java110.entity.audit.AuditUser; import com.java110.event.service.api.ServiceDataFlowEvent; import com.java110.utils.constant.ServiceCodeAuditUserConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.vo.api.complaint.ApiComplaintDataVo; import com.java110.vo.api.complaint.ApiComplaintVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import java.util.ArrayList; import java.util.List; /** * 查询审核订单侦听类 */ @Java110Listener("listAuditHistoryComplaintsListener") public class ListAuditHistoryComplaintsListener extends AbstractServiceApiListener { @Autowired private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl; @Override public String getServiceCode() { return ServiceCodeAuditUserConstant.LIST_AUDIT_HISTORY_COMPLAINTS; } @Override public HttpMethod getHttpMethod() { return HttpMethod.GET; } @Override public int getOrder() { return DEFAULT_ORDER; } public IComplaintUserInnerServiceSMO getComplaintUserInnerServiceSMOImpl() { return complaintUserInnerServiceSMOImpl; } public void setComplaintUserInnerServiceSMOImpl(IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl) { this.complaintUserInnerServiceSMOImpl = complaintUserInnerServiceSMOImpl; } @Override protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID"); Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户ID"); Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区ID"); Assert.hasKeyAndValue(reqJson, "row", "必填,请填写每页显示数"); Assert.hasKeyAndValue(reqJson, "page", "必填,请填写页数"); super.validatePageInfo(reqJson); } @Override protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) { AuditUser auditUser = new AuditUser(); auditUser.setUserId(reqJson.getString("userId")); auditUser.setStoreId(reqJson.getString("storeId")); auditUser.setCommunityId(reqJson.getString("communityId")); auditUser.setPage(reqJson.getInteger("page")); auditUser.setRow(reqJson.getInteger("row")); long count = complaintUserInnerServiceSMOImpl.getUserHistoryTaskCount(auditUser); List<ApiComplaintDataVo> auditComplaints = null; if (count > 0) { auditComplaints = BeanConvertUtil.covertBeanList(complaintUserInnerServiceSMOImpl.getUserHistoryTasks(auditUser), ApiComplaintDataVo.class); } else { auditComplaints = new ArrayList<>(); } ApiComplaintVo apiComplaintVo = new ApiComplaintVo(); apiComplaintVo.setTotal((int) count); apiComplaintVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row"))); apiComplaintVo.setComplaints(auditComplaints); ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiComplaintVo), HttpStatus.OK); context.setResponseEntity(responseEntity); } } CommonService/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java
@@ -10,10 +10,15 @@ import com.java110.dto.complaint.ComplaintDto; import com.java110.entity.audit.AuditUser; import com.java110.utils.util.Assert; import org.activiti.engine.HistoryService; import org.activiti.engine.ProcessEngine; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.history.HistoricActivityInstance; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.impl.identity.Authentication; import org.activiti.engine.query.Query; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Comment; import org.activiti.engine.task.Task; @@ -147,18 +152,34 @@ return tmpComplaintDtos; } /** * 查询用户任务数 * * @param user * @return */ public long getUserHistoryTaskCount(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); Query query = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey("complaint") .taskAssignee(user.getUserId()); return query.count(); } /** * 获取用户审批的任务 * * @param user 用户信息 */ public List<ComplaintDto> getUserHistoryTasks(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey("complaint"); ; query.taskAssignee(user.getUserId()); query.orderByTaskCreateTime().desc(); List<Task> list = null; HistoryService historyService = processEngine.getHistoryService(); Query query = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey("complaint") .taskAssignee(user.getUserId()) .orderByHistoricTaskInstanceStartTime() .desc(); List<HistoricTaskInstance> list = null; if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage(user.getPage(), user.getRow()); } else { @@ -166,7 +187,7 @@ } List<String> complaintIds = new ArrayList<>(); for (Task task : list) { for (HistoricTaskInstance task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); WebService/src/main/java/com/java110/web/components/auditUser/MyAuditHistoryComplaintsComponent.java
New file @@ -0,0 +1,46 @@ package com.java110.web.components.auditUser; import com.java110.core.context.IPageData; import com.java110.web.smo.auditUser.IListAuditComplaintsSMO; import com.java110.web.smo.auditUser.IListAuditHistoryComplaintsSMO; import com.java110.web.smo.complaint.IAuditComplaintSMO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; /** * 我的审核单查询 * <p> * add by wuxw * <p> * 2019-06-29 */ @Component("myAuditHistoryComplaints") public class MyAuditHistoryComplaintsComponent { @Autowired private IListAuditHistoryComplaintsSMO listAuditHistoryComplaintsSMOImpl; /** * 查询审核人员列表 * * @param pd 页面数据封装 * @return 返回 ResponseEntity 对象 */ public ResponseEntity<String> list(IPageData pd) { return listAuditHistoryComplaintsSMOImpl.listAuditHistoryComplaints(pd); } public IListAuditHistoryComplaintsSMO getListAuditHistoryComplaintsSMOImpl() { return listAuditHistoryComplaintsSMOImpl; } public void setListAuditHistoryComplaintsSMOImpl(IListAuditHistoryComplaintsSMO listAuditHistoryComplaintsSMOImpl) { this.listAuditHistoryComplaintsSMOImpl = listAuditHistoryComplaintsSMOImpl; } } WebService/src/main/java/com/java110/web/smo/auditUser/IListAuditHistoryComplaintsSMO.java
New file @@ -0,0 +1,17 @@ package com.java110.web.smo.auditUser; import com.java110.core.context.IPageData; import org.springframework.http.ResponseEntity; /** * 查询审核单 */ public interface IListAuditHistoryComplaintsSMO { /** * 查询审核订单 * @param pd * @return */ public ResponseEntity<String> listAuditHistoryComplaints(IPageData pd); } WebService/src/main/java/com/java110/web/smo/auditUser/impl/ListAuditHistoryComplaintsSMOImpl.java
New file @@ -0,0 +1,67 @@ package com.java110.web.smo.auditUser.impl; import com.alibaba.fastjson.JSONObject; import com.java110.core.component.AbstractComponentSMO; import com.java110.core.context.IPageData; import com.java110.entity.component.ComponentValidateResult; import com.java110.utils.constant.PrivilegeCodeConstant; import com.java110.utils.constant.ServiceConstant; import com.java110.utils.exception.SMOException; import com.java110.utils.util.Assert; import com.java110.web.smo.auditUser.IListAuditHistoryComplaintsSMO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * 查询auditUser服务类 */ @Service("listAuditHistoryComplaintsSMOImpl") public class ListAuditHistoryComplaintsSMOImpl extends AbstractComponentSMO implements IListAuditHistoryComplaintsSMO { @Autowired private RestTemplate restTemplate; @Override public ResponseEntity<String> listAuditHistoryComplaints(IPageData pd) throws SMOException { return businessProcess(pd); } @Override protected void validate(IPageData pd, JSONObject paramIn) { super.validatePageInfo(pd); Assert.hasKeyAndValue(paramIn, "communityId", "必填,请填写小区信息"); super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.AGENT_HAS_LIST_AUDIT_HISTORY_COMPLAINT); } @Override protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) { ComponentValidateResult result = super.validateStoreStaffCommunityRelationship(pd, restTemplate); paramIn.put("storeId", result.getStoreId()); paramIn.put("userId", result.getUserId()); String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/auditUser.listAuditHistoryComplaints" + mapToUrlParam(paramIn); ResponseEntity<String> responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); return responseEntity; } public RestTemplate getRestTemplate() { return restTemplate; } public void setRestTemplate(RestTemplate restTemplate) { this.restTemplate = restTemplate; } } WebService/src/main/resources/components/auditPackage/myAuditHistoryComplaint/myAuditHistoryComplaints.html
New file @@ -0,0 +1,61 @@ <div class="wrapper wrapper-content animated fadeInRight ecommerce"> <div class="row"> <div class="col-lg-12"> <div class="ibox"> <div class="ibox-title"> <h5>投诉历史单</h5> <div class="ibox-tools" style="top:10px;"> </div> </div> <div class="ibox-content"> <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15" > <thead> <tr> <th class="text-center">投诉ID</th> <th class="text-center">投诉类型</th> <th class="text-center">房屋</th> <th class="text-center">投诉人</th> <th class="text-center">投诉电话</th> <th class="text-center">投诉状态</th> <!-- <th class="text-center">操作</th>--> </tr> </thead> <tbody> <tr v-for="complaint in myAuditHistoryComplaintsInfo.complaints"> <td class="text-center">{{complaint.complaintId}}</td> <td class="text-center">{{complaint.typeCdName}}</td> <td class="text-center"> {{complaint.floorNum}}号楼{{complaint.unitNum}}单元{{complaint.roomNum}}室 </td> <td class="text-center">{{complaint.complaintName}}</td> <td class="text-center">{{complaint.tel}}</td> <td class="text-center">{{complaint.stateName}}</td> <!--<td class="text-center"> <div class="btn-group"> <button class="btn-white btn btn-xs" v-on:click="_openAuditComplaintModel(complaint)">审核 </button> </div> </td>--> </tr> </tbody> <tfoot> <tr> <td colspan="7"> <ul class="pagination float-right"></ul> </td> </tr> </tfoot> </table> <!-- 分页 --> <vc:create name="pagination"></vc:create> </div> </div> </div> </div> </div> WebService/src/main/resources/components/auditPackage/myAuditHistoryComplaint/myAuditHistoryComplaints.js
New file @@ -0,0 +1,78 @@ /** 入驻小区 **/ (function (vc) { var DEFAULT_PAGE = 1; var DEFAULT_ROWS = 10; vc.extends({ data: { myAuditHistoryComplaintsInfo: { complaints: [], total: 0, records: 1, moreCondition: false, currentTaskId: '', currentComplaintId: '', userName: '', conditions: { AuditOrdersId: '', userName: '', auditLink: '', } } }, _initMethod: function () { vc.component._listAuditOrders(DEFAULT_PAGE, DEFAULT_ROWS); }, _initEvent: function () { vc.on('myAuditComplaints', 'auditMessage', function (_auditInfo) { vc.component._auditComplaintInfo(_auditInfo); }); vc.on('pagination', 'page_event', function (_currentPage) { vc.component._listAuditOrders(_currentPage, DEFAULT_ROWS); }); }, methods: { _listAuditOrders: function (_page, _rows) { vc.component.myAuditHistoryComplaintsInfo.conditions.page = _page; vc.component.myAuditHistoryComplaintsInfo.conditions.row = _rows; vc.component.myAuditHistoryComplaintsInfo.conditions.communityId = vc.getCurrentCommunity().communityId; var param = { params: vc.component.myAuditHistoryComplaintsInfo.conditions }; //发送get请求 vc.http.get('myAuditHistoryComplaints', 'list', param, function (json, res) { var _myAuditHistoryComplaintsInfo = JSON.parse(json); vc.component.myAuditHistoryComplaintsInfo.total = _myAuditHistoryComplaintsInfo.total; vc.component.myAuditHistoryComplaintsInfo.records = _myAuditHistoryComplaintsInfo.records; vc.component.myAuditHistoryComplaintsInfo.complaints = _myAuditHistoryComplaintsInfo.complaints; vc.emit('pagination', 'init', { total: vc.component.myAuditHistoryComplaintsInfo.records, currentPage: _page }); }, function (errInfo, error) { console.log('请求失败处理'); } ); }, _queryAuditOrdersMethod: function () { vc.component._listAuditOrders(DEFAULT_PAGE, DEFAULT_ROWS); }, _moreCondition: function () { if (vc.component.AuditOrdersManageInfo.moreCondition) { vc.component.AuditOrdersManageInfo.moreCondition = false; } else { vc.component.AuditOrdersManageInfo.moreCondition = true; } } } }); })(window.vc); WebService/src/main/resources/views/myAuditHistoryComplaintsFlow.html
New file @@ -0,0 +1,36 @@ <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:vc="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>投诉历史单|java110</title> <vc:create name="commonTop"></vc:create> </head> <body> <vc:create name="bodyTop"></vc:create> <div id="wrapper"> <vc:create name="menu"></vc:create> <div id="page-wrapper" class="gray-bg dashbard-1"> <div class="row border-bottom"> <vc:create name="nav"></vc:create> </div> <div class="wrapper wrapper-content" style="padding-bottom: 0px;"> <vc:create name="breadcrumb"></vc:create> </div> <!-- id="component" --> <div id="component" class="wrapper wrapper-content animated fadeInRight"> <vc:create name="myAuditHistoryComplaints"></vc:create> </div> <vc:create name="copyright"></vc:create> </div> </div> <vc:create name="commonBottom"></vc:create> </body> </html> java110-core/src/main/java/com/java110/core/smo/complaintUser/IComplaintUserInnerServiceSMO.java
@@ -40,6 +40,22 @@ @RequestMapping(value = "/getUserTasks", method = RequestMethod.POST) public List<ComplaintDto> getUserTasks(@RequestBody AuditUser user); /** * 查询用户处理任务数 * * @param user * @return */ @RequestMapping(value = "/getUserHistoryTaskCount", method = RequestMethod.POST) public long getUserHistoryTaskCount(@RequestBody AuditUser user); /** * 获取用户处理审批的任务 * * @param user 用户信息 */ @RequestMapping(value = "/getUserHistoryTasks", method = RequestMethod.POST) public List<ComplaintDto> getUserHistoryTasks(@RequestBody AuditUser user); /** * 处理任务 java110-utils/src/main/java/com/java110/utils/constant/PrivilegeCodeConstant.java
@@ -132,6 +132,7 @@ //审核工单 public static final String AGENT_HAS_LIST_AUDIT_COMPLAINT = "502019110360380006"; public static final String AGENT_HAS_LIST_AUDIT_HISTORY_COMPLAINT = "502019110534240006"; java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeAuditUserConstant.java
@@ -38,5 +38,10 @@ */ public static final String LIST_AUDIT_COMPLAINTS = "auditUser.listAuditComplaints"; /** * 查询 历史审核投诉 */ public static final String LIST_AUDIT_HISTORY_COMPLAINTS = "auditUser.listAuditHistoryComplaints"; }