wuxw
2022-07-18 0501404fed634f1fbf5f1cc23eeefb0696dea406
优化 投诉建议 修改为cmd 方式
3个文件已删除
1个文件已修改
2 文件已重命名
3个文件已添加
585 ■■■■■ 已修改文件
service-api/src/main/java/com/java110/api/listener/complaint/AuditComplaintListener.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/listener/complaint/DeleteComplaintListener.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/listener/complaint/UpdateComplaintListener.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/cmd/complaint/AuditComplaintCmd.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/cmd/complaint/DeleteComplaintCmd.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/cmd/complaint/ListComplaintsCmd.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/cmd/complaint/SaveComplaintCmd.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/cmd/complaint/UpdateComplaintCmd.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/listener/complaint/AuditComplaintListener.java
File was deleted
service-api/src/main/java/com/java110/api/listener/complaint/DeleteComplaintListener.java
File was deleted
service-api/src/main/java/com/java110/api/listener/complaint/UpdateComplaintListener.java
File was deleted
service-common/src/main/java/com/java110/common/smo/impl/ComplaintUserInnerServiceSMOImpl.java
@@ -78,8 +78,13 @@
        Map<String, Object> variables = new HashMap<String, Object>();
        //variables.put("complaintDto", complaintDto);
        variables.put("startUserId", complaintDto.getCurrentUserId());
        String key = getWorkflowDto(complaintDto.getCommunityId());
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(complaintDto.getCommunityId()), complaintDto.getComplaintId(), variables);
        if(StringUtil.isEmpty(key)){
            return null;
        }
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, complaintDto.getComplaintId(), variables);
        //将得到的实例流程id值赋给之前设置的变量
        String processInstanceId = processInstance.getId();
        // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
@@ -98,11 +103,13 @@
        workflowDto.setCommunityId(communityId);
        List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto);
        Assert.listOnlyOne(workflowDtos, "未找到 投诉建议流程或找到多条,请在物业账号系统管理下流程管理中配置流程");
        if(workflowDtos == null || workflowDtos.size() < 1){
            return "";
        }
        WorkflowDto tmpWorkflowDto = workflowDtos.get(0);
        if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) {
            throw new IllegalArgumentException("投诉建议流程还未部署");
            return "";
        }
        return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId();
    }
@@ -312,6 +319,7 @@
     */
    public boolean deleteTask(@RequestBody ComplaintDto complaintDto){
        String taskId = complaintDto.getTaskId();
        Task task = taskService.createTaskQuery().taskId(complaintDto.getTaskId()).singleResult();
        String processInstanceId = task.getProcessInstanceId();
        ProcessInstance pi = runtimeService.createProcessInstanceQuery()
service-store/src/main/java/com/java110/store/cmd/complaint/AuditComplaintCmd.java
New file
@@ -0,0 +1,87 @@
package com.java110.store.cmd.complaint;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.intf.common.IComplaintUserInnerServiceSMO;
import com.java110.intf.community.IComplaintV1InnerServiceSMO;
import com.java110.intf.store.IComplaintInnerServiceSMO;
import com.java110.po.complaint.ComplaintPo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.util.List;
@Java110Cmd(serviceCode = "complaint.auditComplaint")
public class AuditComplaintCmd extends Cmd {
    @Autowired
    private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
    @Autowired
    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
    @Autowired
    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区信息");
        Assert.hasKeyAndValue(reqJson, "taskId", "必填,请填写任务ID");
        Assert.hasKeyAndValue(reqJson, "state", "必填,请填写审核状态");
        Assert.hasKeyAndValue(reqJson, "remark", "必填,请填写批注");
        Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户信息");
    }
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        ComplaintDto complaintDto = new ComplaintDto();
        complaintDto.setComplaintId(reqJson.getString("complaintId"));
        complaintDto.setCommunityId(reqJson.getString("communityId"));
        List<ComplaintDto> complaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
        Assert.listOnlyOne(complaintDtos, "未存在或存在多条投诉单");
        complaintDto = complaintDtos.get(0);
        complaintDto.setTaskId(reqJson.getString("taskId"));
        complaintDto.setCommunityId(reqJson.getString("communityId"));
        complaintDto.setStoreId(reqJson.getString("storeId"));
        complaintDto.setAuditCode(reqJson.getString("state"));
        complaintDto.setAuditMessage(reqJson.getString("remark"));
        complaintDto.setCurrentUserId(reqJson.getString("userId"));
        boolean isLastTask = complaintUserInnerServiceSMOImpl.completeTask(complaintDto);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
        if (isLastTask) {
            complaintDto = new ComplaintDto();
            complaintDto.setStoreId(reqJson.getString("storeId"));
            complaintDto.setCommunityId(reqJson.getString("communityId"));
            complaintDto.setComplaintId(reqJson.getString("complaintId"));
            complaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
            Assert.listOnlyOne(complaintDtos, "存在多条记录,或不存在数据" + complaintDto.getComplaintId());
            JSONObject businessComplaint = new JSONObject();
            businessComplaint.putAll(BeanConvertUtil.beanCovertMap(complaintDtos.get(0)));
            businessComplaint.put("state", "10002");
            ComplaintPo complaintPo = BeanConvertUtil.covertBean(businessComplaint, ComplaintPo.class);
            int flag = complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
            if (flag < 1) {
                throw new CmdException("投诉不存在");
            }
        }
        context.setResponseEntity(responseEntity);
    }
}
service-store/src/main/java/com/java110/store/cmd/complaint/DeleteComplaintCmd.java
New file
@@ -0,0 +1,51 @@
package com.java110.store.cmd.complaint;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.intf.common.IComplaintUserInnerServiceSMO;
import com.java110.intf.community.IComplaintV1InnerServiceSMO;
import com.java110.po.complaint.ComplaintPo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
@Java110Cmd(serviceCode = "complaint.deleteComplaint")
public class DeleteComplaintCmd extends Cmd{
    @Autowired
    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
    @Autowired
    private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
    }
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
        int flag = complaintV1InnerServiceSMOImpl.deleteComplaint(complaintPo);
        if (flag < 1) {
            throw new CmdException("投诉不存在");
        }
        if(StringUtil.isEmpty(complaintPo.getTaskId())){
            return ;
        }
        ComplaintDto complaintDto = new ComplaintDto();
        complaintDto.setTaskId(complaintPo.getTaskId());
        complaintUserInnerServiceSMOImpl.deleteTask(complaintDto);
    }
}
service-store/src/main/java/com/java110/store/cmd/complaint/ListComplaintsCmd.java
old mode 100755 new mode 100644
File was renamed from service-api/src/main/java/com/java110/api/listener/complaint/ListComplaintsListener.java
@@ -1,10 +1,10 @@
package com.java110.api.listener.complaint;
package com.java110.store.cmd.complaint;
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.event.service.api.ServiceDataFlowEvent;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.RoomDto;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.dto.file.FileRelDto;
@@ -12,7 +12,7 @@
import com.java110.intf.common.IFileRelInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.store.IComplaintInnerServiceSMO;
import com.java110.utils.constant.ServiceCodeComplaintConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
@@ -20,19 +20,14 @@
import com.java110.vo.api.complaint.ApiComplaintVo;
import com.java110.vo.api.junkRequirement.PhotoVo;
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("listComplaintsListener")
public class ListComplaintsListener extends AbstractServiceApiListener {
@Java110Cmd(serviceCode = "complaint.listComplaints")
public class ListComplaintsCmd extends Cmd{
    @Autowired
    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
@@ -46,39 +41,13 @@
    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
    @Override
    public String getServiceCode() {
        return ServiceCodeComplaintConstant.LIST_COMPLAINTS;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.GET;
    }
    @Override
    public int getOrder() {
        return DEFAULT_ORDER;
    }
    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
        return complaintInnerServiceSMOImpl;
    }
    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
    }
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区信息");
        super.validatePageInfo(reqJson);
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
        String roomId = reqJson.getString("roomId");
service-store/src/main/java/com/java110/store/cmd/complaint/SaveComplaintCmd.java
old mode 100755 new mode 100644
File was renamed from service-api/src/main/java/com/java110/api/listener/complaint/SaveComplaintListener.java
@@ -1,34 +1,29 @@
package com.java110.api.listener.complaint;
package com.java110.store.cmd.complaint;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.bmo.complaint.IComplaintBMO;
import com.java110.api.listener.AbstractServiceApiPlusListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.event.service.api.ServiceDataFlowEvent;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.annotation.Java110Transactional;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.dto.file.FileDto;
import com.java110.intf.common.IComplaintUserInnerServiceSMO;
import com.java110.intf.common.IFileInnerServiceSMO;
import com.java110.intf.common.IFileRelInnerServiceSMO;
import com.java110.intf.community.IComplaintV1InnerServiceSMO;
import com.java110.po.complaint.ComplaintPo;
import com.java110.po.file.FileRelPo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ServiceCodeComplaintConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
/**
 * 保存小区侦听
 * add by wuxw 2019-06-30
 */
@Java110Listener("saveComplaintListener")
public class SaveComplaintListener extends AbstractServiceApiPlusListener {
    @Autowired
    private IComplaintBMO complaintBMOImpl;
@Java110Cmd(serviceCode = "complaint.saveComplaint")
public class SaveComplaintCmd extends Cmd{
    @Autowired
    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
@@ -36,10 +31,14 @@
    @Autowired
    private IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl;
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
    @Autowired
    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
    @Autowired
    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
        Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
@@ -48,14 +47,20 @@
        Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户信息");
        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写投诉内容");
        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区ID");
    }
    @Override
    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
    @Java110Transactional
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        reqJson.put("startUserId", reqJson.getString("userId"));
        complaintBMOImpl.addComplaint(reqJson, context);
        reqJson.put("complaintId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_complaintId));
        reqJson.put("state", "10001");
        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
        int flag = complaintV1InnerServiceSMOImpl.saveComplaint(complaintPo);
        if(flag < 1){
            throw new CmdException("投诉失败");
        }
        if (reqJson.containsKey("photos") && reqJson.getJSONArray("photos").size() > 0) {
            JSONArray photos = reqJson.getJSONArray("photos");
@@ -80,37 +85,21 @@
                businessUnit.put("fileRealName", fileDto.getFileId());
                businessUnit.put("fileSaveName", fileName);
                FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
                super.insert(context, fileRelPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_FILE_REL);
                fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
            }
        }
        //commit(context);
        ComplaintDto complaintDto = BeanConvertUtil.covertBean(reqJson, ComplaintDto.class);
        complaintDto.setCurrentUserId(reqJson.getString("userId"));
        complaintUserInnerServiceSMOImpl.startProcess(complaintDto);
        complaintDto = complaintUserInnerServiceSMOImpl.startProcess(complaintDto);
    }
    @Override
    public String getServiceCode() {
        return ServiceCodeComplaintConstant.ADD_COMPLAINT;
    }
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.POST;
    }
    @Override
    public int getOrder() {
        return DEFAULT_ORDER;
    }
    public IComplaintUserInnerServiceSMO getComplaintUserInnerServiceSMOImpl() {
        return complaintUserInnerServiceSMOImpl;
    }
    public void setComplaintUserInnerServiceSMOImpl(IComplaintUserInnerServiceSMO complaintUserInnerServiceSMOImpl) {
        this.complaintUserInnerServiceSMOImpl = complaintUserInnerServiceSMOImpl;
        //没有配置流程,直接设置为完成
        if(complaintDto == null){
             complaintPo = new ComplaintPo();
             complaintPo.setComplaintId(reqJson.getString("complaintId"));
             complaintPo.setState(ComplaintDto.STATE_FINISH);
            complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
        }
    }
}
service-store/src/main/java/com/java110/store/cmd/complaint/UpdateComplaintCmd.java
New file
@@ -0,0 +1,62 @@
package com.java110.store.cmd.complaint;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.intf.community.IComplaintV1InnerServiceSMO;
import com.java110.intf.store.IComplaintInnerServiceSMO;
import com.java110.po.complaint.ComplaintPo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Java110Cmd(serviceCode = "complaint.updateComplaint")
public class UpdateComplaintCmd extends Cmd {
    @Autowired
    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
    @Autowired
    private IComplaintV1InnerServiceSMO complaintV1InnerServiceSMOImpl;
    @Override
    public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        Assert.hasKeyAndValue(reqJson, "complaintId", "投诉ID不能为空");
        Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID");
        Assert.hasKeyAndValue(reqJson, "typeCd", "必填,请选择投诉类型");
        //Assert.hasKeyAndValue(reqJson, "roomId", "必填,请选择房屋编号");
        Assert.hasKeyAndValue(reqJson, "complaintName", "必填,请填写投诉人");
        Assert.hasKeyAndValue(reqJson, "tel", "必填,请填写投诉电话");
        //Assert.hasKeyAndValue(reqJson, "state", "必填,请填写投诉状态");
        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写投诉内容");
    }
    @Override
    public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
        ComplaintDto complaintDto = new ComplaintDto();
        complaintDto.setStoreId(reqJson.getString("storeId"));
        complaintDto.setComplaintId(reqJson.getString("complaintId"));
        List<ComplaintDto> complaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
        Assert.listOnlyOne(complaintDtos, "存在多条记录,或不存在数据" + complaintDto.getComplaintId());
        JSONObject businessComplaint = new JSONObject();
        businessComplaint.putAll(reqJson);
        businessComplaint.put("state", complaintDtos.get(0).getState());
        businessComplaint.put("roomId", complaintDtos.get(0).getRoomId());
        ComplaintPo complaintPo = BeanConvertUtil.covertBean(reqJson, ComplaintPo.class);
        int flag = complaintV1InnerServiceSMOImpl.updateComplaint(complaintPo);
        if(flag < 1){
            throw new CmdException("修改投诉失败");
        }
    }
}