java110
2020-03-28 a0373d6b939d71878ccfcc067cbb4efa6d803830
Merge branch 'back' of https://github.com/java110/MicroCommunity into back
2个文件已添加
10个文件已修改
636 ■■■■■ 已修改文件
Api/src/main/java/com/java110/api/listener/purchaseApply/ListPurchaseApplysListener.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/purchaseApply/SavePurchaseApplyListener.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommonService/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/dao/IPurchaseApplyServiceDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/dao/impl/PurchaseApplyServiceDaoImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/java/com/java110/store/smo/impl/PurchaseApplyInnerServiceSMOImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
StoreService/src/main/resources/application-dev.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/purchaseApply/PurchaseApplyDto.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/purchaseApply/PurchaseApplyDetailVo.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/purchaseApply/IPurchaseApplyInnerServiceSMO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/purchaseApplyUser/IPurchaseApplyUserInnerServiceSMO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/store/PurchaseApplyServiceDaoImplMapper.xml 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/purchaseApply/ListPurchaseApplysListener.java
@@ -73,37 +73,22 @@
        List<ApiPurchaseApplyDataVo> purchaseApplys = null;
        if (count > 0) {
            purchaseApplys = BeanConvertUtil.covertBeanList(purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(purchaseApplyDto), ApiPurchaseApplyDataVo.class);
            List<String> orderIds = new ArrayList<>();
            for( ApiPurchaseApplyDataVo apiPurchaseApplyDataVo : purchaseApplys){
                orderIds.add(apiPurchaseApplyDataVo.getApplyOrderId());
            }
            //明细列表
            PurchaseApplyDetailDto purchaseApplyDetailDto = new PurchaseApplyDetailDto();
            purchaseApplyDetailDto.setApplyOrderIds(orderIds);
            List<PurchaseApplyDetailVo> purchaseApplyDetailVos = BeanConvertUtil.covertBeanList(purchaseApplyInnerServiceSMOImpl.queryPurchaseApplyDetails(purchaseApplyDetailDto), PurchaseApplyDetailVo.class);
            for( ApiPurchaseApplyDataVo apiPurchaseApplyDataVo : purchaseApplys){
                List<PurchaseApplyDetailVo> applyDetailList = new ArrayList<>();
                for( PurchaseApplyDetailVo purchaseApplyDetailVo : purchaseApplyDetailVos){
                    if(apiPurchaseApplyDataVo.getApplyOrderId().equals(purchaseApplyDetailVo.getApplyOrderId())){
                        applyDetailList.add(purchaseApplyDetailVo);
                    }
                }
                apiPurchaseApplyDataVo.setPurchaseApplyDetailVo(applyDetailList);
            }
            List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplyAndDetails(purchaseApplyDto);
            purchaseApplys = BeanConvertUtil.covertBeanList(purchaseApplyDtos, ApiPurchaseApplyDataVo.class);
            for( ApiPurchaseApplyDataVo apiPurchaseApplyDataVo : purchaseApplys){
                List<PurchaseApplyDetailVo> applyDetailList = apiPurchaseApplyDataVo.getPurchaseApplyDetailVo();
                StringBuffer resNames = new StringBuffer();
                BigDecimal totalPrice = new BigDecimal(0);
                for( PurchaseApplyDetailVo purchaseApplyDetailVo : applyDetailList){
                    resNames.append(purchaseApplyDetailVo.getResName()+";");
                    BigDecimal price = new BigDecimal(purchaseApplyDetailVo.getPrice());
                    BigDecimal quantity = new BigDecimal(purchaseApplyDetailVo.getQuantity());
                    totalPrice = totalPrice.add(price.multiply(quantity));
                if(applyDetailList.size() > 0){
                    StringBuffer resNames = new StringBuffer();
                    BigDecimal totalPrice = new BigDecimal(0);
                    for( PurchaseApplyDetailVo purchaseApplyDetailVo : applyDetailList){
                        resNames.append(purchaseApplyDetailVo.getResName()+";");
                        BigDecimal price = new BigDecimal(purchaseApplyDetailVo.getPrice());
                        BigDecimal quantity = new BigDecimal(purchaseApplyDetailVo.getQuantity());
                        totalPrice = totalPrice.add(price.multiply(quantity));
                    }
                    apiPurchaseApplyDataVo.setResourceNames(resNames.toString());
                    apiPurchaseApplyDataVo.setTotalPrice(totalPrice.toString());
                }
                apiPurchaseApplyDataVo.setResourceNames(resNames.toString());
                apiPurchaseApplyDataVo.setTotalPrice(totalPrice.toString());
            }
        } else {
            purchaseApplys = new ArrayList<>();
Api/src/main/java/com/java110/api/listener/purchaseApply/SavePurchaseApplyListener.java
@@ -6,15 +6,19 @@
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.smo.purchaseApplyUser.IPurchaseApplyUserInnerServiceSMO;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.entity.center.AppService;
import com.java110.event.service.api.ServiceDataFlowEvent;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.ServiceCodePurchaseApplyConstant;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
/**
@@ -26,6 +30,8 @@
    @Autowired
    private IPurchaseApplyBMO purchaseApplyBMOImpl;
    @Autowired
    private IPurchaseApplyUserInnerServiceSMO iPurchaseApplyUserInnerServiceSMO;
    @Override
    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
        Assert.hasKeyAndValue(reqJson, "resourceStores", "必填,请填写申请采购的物资");
@@ -49,6 +55,12 @@
        ResponseEntity<String> responseEntity = purchaseApplyBMOImpl.callService(context, service.getServiceCode(), businesses);
        //开始流程
//        if(HttpStatus.OK == responseEntity.getStatusCode()){
//            PurchaseApplyDto purchaseApplyDto = BeanConvertUtil.covertBean(reqJson, PurchaseApplyDto.class);
//            purchaseApplyDto.setCurrentUserId(reqJson.getString("userId"));
//            iPurchaseApplyUserInnerServiceSMO.startProcess(purchaseApplyDto);
//        }
        context.setResponseEntity(responseEntity);
    }
CommonService/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java
New file
@@ -0,0 +1,306 @@
package com.java110.common.smo.impl;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.core.smo.complaint.IComplaintInnerServiceSMO;
import com.java110.core.smo.purchaseApplyUser.IPurchaseApplyUserInnerServiceSMO;
import com.java110.dto.PageDto;
import com.java110.dto.auditMessage.AuditMessageDto;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.entity.audit.AuditUser;
import com.java110.utils.util.Assert;
import com.java110.utils.util.StringUtil;
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.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
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;
import org.activiti.engine.task.TaskQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
public class PurchaseApplyUserInnerServiceSMOImpl extends BaseServiceSMO implements IPurchaseApplyUserInnerServiceSMO {
    @Autowired
    private ProcessEngine processEngine;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private IComplaintInnerServiceSMO complaintInnerServiceSMOImpl;
    /**
     * 启动流程
     *
     * @return
     */
    public PurchaseApplyDto startProcess(@RequestBody PurchaseApplyDto purchaseApplyDto) {
        //将信息加入map,以便传入流程中
        Map<String, Object> variables = new HashMap<String, Object>();
        variables.put("purchaseApplyDto", purchaseApplyDto);
        variables.put("userId", purchaseApplyDto.getCurrentUserId());
        //开启流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("resourceEntry", purchaseApplyDto.getApplyOrderId(), variables);
        //将得到的实例流程id值赋给之前设置的变量
        String processInstanceId = processInstance.getId();
        // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
        purchaseApplyDto.setProcessInstanceId(processInstanceId);
        //第一个节点自动提交
        autoFinishFirstTask(purchaseApplyDto);
        return purchaseApplyDto;
    }
    /**
     * 自动提交第一步
     */
    private void autoFinishFirstTask(PurchaseApplyDto purchaseApplyDto) {
        Task task = null;
        TaskQuery query = taskService.createTaskQuery().taskCandidateOrAssigned(purchaseApplyDto.getCurrentUserId()).active();
        List<Task> todoList = query.list();//获取申请人的待办任务列表
        for (Task tmp : todoList) {
            if (tmp.getProcessInstanceId().equals(purchaseApplyDto.getProcessInstanceId())) {
                task = tmp;//获取当前流程实例,当前申请人的待办任务
                break;
            }
        }
        Assert.notNull(task, "未找到当前用户任务userId = " + purchaseApplyDto.getCurrentUserId());
        purchaseApplyDto.setTaskId(task.getId());
        purchaseApplyDto.setAuditCode("10000");
        purchaseApplyDto.setAuditMessage("提交");
        completeTask(purchaseApplyDto);
    }
    /**
     * 查询用户任务数
     *
     * @param user
     * @return
     */
    public long getUserTaskCount(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
        query.taskAssignee(user.getUserId());
        return query.count();
    }
    /**
     * 获取用户任务
     *
     * @param user 用户信息
     */
    public List<PurchaseApplyDto> getUserTasks(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
        ;
        query.taskAssignee(user.getUserId());
        query.orderByTaskCreateTime().desc();
        List<Task> list = null;
        if (user.getPage() != PageDto.DEFAULT_PAGE) {
            list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow());
        } else {
            list = query.list();
        }
        List<String> complaintIds = new ArrayList<>();
        Map<String, String> taskBusinessKeyMap = new HashMap<>();
        for (Task task : list) {
            String processInstanceId = task.getProcessInstanceId();
            //3.使用流程实例,查询
            ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
            //4.使用流程实例对象获取BusinessKey
            String business_key = pi.getBusinessKey();
            complaintIds.add(business_key);
            taskBusinessKeyMap.put(business_key, task.getId());
        }
        if (complaintIds == null || complaintIds.size() == 0) {
            return new ArrayList<>();
        }
        //查询 投诉信息
        PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
        List<PurchaseApplyDto> purchaseApplyDtos = new ArrayList<>();
//        ComplaintDto complaintDto = new ComplaintDto();
//        complaintDto.setStoreId(user.getStoreId());
//        complaintDto.setCommunityId(user.getCommunityId());
//        complaintDto.setComplaintIds(complaintIds.toArray(new String[complaintIds.size()]));
//        List<ComplaintDto> tmpComplaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
//
//        for (ComplaintDto tmpComplaintDto : tmpComplaintDtos) {
//            tmpComplaintDto.setTaskId(taskBusinessKeyMap.get(tmpComplaintDto.getComplaintId()));
//        }
        return purchaseApplyDtos;
    }
    /**
     * 查询用户任务数
     *
     * @param user
     * @return
     */
    public long getUserHistoryTaskCount(@RequestBody AuditUser user) {
        HistoryService historyService = processEngine.getHistoryService();
//        Query query = historyService.createHistoricTaskInstanceQuery()
//                .processDefinitionKey("complaint")
//                .taskAssignee(user.getUserId());
        HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
                .processDefinitionKey("resourceEnter")
                .taskAssignee(user.getUserId());
        if(!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())){
            historicTaskInstanceQuery.taskName("resourceEnter");
        }else if(!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())){
            historicTaskInstanceQuery.taskName("resourceEnterDealUser");
        }
        Query query = historicTaskInstanceQuery;
        return query.count();
    }
    /**
     * 获取用户审批的任务
     *
     * @param user 用户信息
     */
    public List<PurchaseApplyDto> getUserHistoryTasks(@RequestBody AuditUser user) {
        HistoryService historyService = processEngine.getHistoryService();
        HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
                .processDefinitionKey("resourceEnter")
                .taskAssignee(user.getUserId()) ;
        if(!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())){
            historicTaskInstanceQuery.taskName("resourceEnter");
        }else if(!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())){
            historicTaskInstanceQuery.taskName("resourceEnterDealUser");
        }
        Query query = historicTaskInstanceQuery.orderByHistoricTaskInstanceStartTime().desc();
        List<HistoricTaskInstance> list = null;
        if (user.getPage() != PageDto.DEFAULT_PAGE) {
            list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow());
        } else {
            list = query.list();
        }
        List<String> complaintIds = new ArrayList<>();
        for (HistoricTaskInstance task : list) {
            String processInstanceId = task.getProcessInstanceId();
            //3.使用流程实例,查询
            HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
            //4.使用流程实例对象获取BusinessKey
            String business_key = pi.getBusinessKey();
            complaintIds.add(business_key);
        }
        //查询 投诉信息
//        ComplaintDto complaintDto = new ComplaintDto();
//        complaintDto.setStoreId(user.getStoreId());
//        complaintDto.setCommunityId(user.getCommunityId());
//        complaintDto.setComplaintIds(complaintIds.toArray(new String[complaintIds.size()]));
//        List<ComplaintDto> tmpComplaintDtos = complaintInnerServiceSMOImpl.queryComplaints(complaintDto);
        return null;
    }
    public boolean completeTask(@RequestBody PurchaseApplyDto purchaseApplyDto) {
        TaskService taskService = processEngine.getTaskService();
        Task task = taskService.createTaskQuery().taskId(purchaseApplyDto.getTaskId()).singleResult();
        String processInstanceId = task.getProcessInstanceId();
        Authentication.setAuthenticatedUserId(purchaseApplyDto.getCurrentUserId());
        taskService.addComment(purchaseApplyDto.getTaskId(), processInstanceId, purchaseApplyDto.getAuditMessage());
        Map<String, Object> variables = new HashMap<String, Object>();
        variables.put("auditCode", purchaseApplyDto.getAuditCode());
        variables.put("currentUserId", purchaseApplyDto.getCurrentUserId());
        //taskService.setAssignee(complaintDto.getTaskId(),complaintDto.getCurrentUserId());
        //taskService.addCandidateUser(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
        //taskService.claim(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
        taskService.complete(purchaseApplyDto.getTaskId(), variables);
        ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
        if (pi == null) {
            return true;
        }
        return false;
    }
    public List<AuditMessageDto> getAuditMessage(@RequestBody PurchaseApplyDto purchaseApplyDto) {
        TaskService taskService = processEngine.getTaskService();
        Task task = taskService.createTaskQuery().taskId(purchaseApplyDto.getTaskId()).singleResult();
        String processInstanceId = task.getProcessInstanceId();
        List<Comment> comments = taskService.getProcessInstanceComments(processInstanceId);
        List<AuditMessageDto> auditMessageDtos = new ArrayList<>();
        if (comments == null || comments.size() < 1) {
            return auditMessageDtos;
        }
        AuditMessageDto messageDto = null;
        for (Comment comment : comments) {
            messageDto = new AuditMessageDto();
            messageDto.setCreateTime(comment.getTime());
            messageDto.setUserId(comment.getUserId());
            messageDto.setMessage(comment.getFullMessage());
        }
        return auditMessageDtos;
    }
    public ProcessEngine getProcessEngine() {
        return processEngine;
    }
    public void setProcessEngine(ProcessEngine processEngine) {
        this.processEngine = processEngine;
    }
    public RuntimeService getRuntimeService() {
        return runtimeService;
    }
    public void setRuntimeService(RuntimeService runtimeService) {
        this.runtimeService = runtimeService;
    }
    public TaskService getTaskService() {
        return taskService;
    }
    public void setTaskService(TaskService taskService) {
        this.taskService = taskService;
    }
    public IComplaintInnerServiceSMO getComplaintInnerServiceSMOImpl() {
        return complaintInnerServiceSMOImpl;
    }
    public void setComplaintInnerServiceSMOImpl(IComplaintInnerServiceSMO complaintInnerServiceSMOImpl) {
        this.complaintInnerServiceSMOImpl = complaintInnerServiceSMOImpl;
    }
}
StoreService/src/main/java/com/java110/store/dao/IPurchaseApplyServiceDao.java
@@ -1,6 +1,7 @@
package com.java110.store.dao;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.utils.exception.DAOException;
import com.java110.vo.api.purchaseApply.PurchaseApplyDetailVo;
@@ -68,6 +69,8 @@
     */
    List<Map> getPurchaseApplyInfo(Map info) throws DAOException;
    List<PurchaseApplyDto> getPurchaseApplyInfo2(Map info) throws DAOException;
    //查询采购明细
    List<Map> getPurchaseApplyDetailInfo(Map info) throws DAOException;
StoreService/src/main/java/com/java110/store/dao/impl/PurchaseApplyServiceDaoImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.base.dao.BaseServiceDao;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.store.dao.IPurchaseApplyServiceDao;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.DAOException;
@@ -119,6 +120,15 @@
    }
    @Override
    public List<PurchaseApplyDto> getPurchaseApplyInfo2(Map info) throws DAOException {
        logger.debug("查询采购申请信息 入参 info : {}",info);
        List<PurchaseApplyDto> businessPurchaseApplyInfos = sqlSessionTemplate.selectList("purchaseApplyServiceDaoImpl.getPurchaseApplyInfo2",info);
        return businessPurchaseApplyInfos;
    }
    @Override
    public List<Map> getPurchaseApplyDetailInfo(Map info) throws DAOException {
        logger.debug("查询采购申请明细信息 入参 info : {}",info);
StoreService/src/main/java/com/java110/store/smo/impl/PurchaseApplyInnerServiceSMOImpl.java
@@ -61,6 +61,34 @@
        return purchaseApplys;
    }
    @Override
    public List<PurchaseApplyDto> queryPurchaseApplyAndDetails(@RequestBody  PurchaseApplyDto purchaseApplyDto) {
        //校验是否传了 分页信息
        int page = purchaseApplyDto.getPage();
        if (page != PageDto.DEFAULT_PAGE) {
            purchaseApplyDto.setPage((page - 1) * purchaseApplyDto.getRow());
        }
        List<PurchaseApplyDto> purchaseApplys = BeanConvertUtil.covertBeanList(purchaseApplyServiceDaoImpl.getPurchaseApplyInfo2(BeanConvertUtil.beanCovertMap(purchaseApplyDto)), PurchaseApplyDto.class);
        if (purchaseApplys == null || purchaseApplys.size() == 0) {
            return purchaseApplys;
        }
        String[] userIds = getUserIds(purchaseApplys);
        //根据 userId 查询用户信息
        List<UserDto> users = userInnerServiceSMOImpl.getUserInfo(userIds);
        for (PurchaseApplyDto purchaseApply : purchaseApplys) {
            refreshPurchaseApply(purchaseApply, users);
        }
        return purchaseApplys;
    }
    /**
     * 从用户列表中查询用户,将用户中的信息 刷新到 floor对象中
     *
StoreService/src/main/resources/application-dev.yml
@@ -7,7 +7,7 @@
    host: dev.redis.java110.com
    port: 6379
    timeout: 3000
    password:
    password: hc
eureka:
  instance:
@@ -36,6 +36,7 @@
    database: 0
    host: dev.redis.java110.com
    port: 6379
    password: hc
    pool:
      max-active: 300
      max-wait: 10000
java110-bean/src/main/java/com/java110/dto/purchaseApply/PurchaseApplyDto.java
@@ -1,9 +1,11 @@
package com.java110.dto.purchaseApply;
import com.java110.dto.PageDto;
import com.java110.vo.api.purchaseApply.PurchaseApplyDetailVo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * @ClassName FloorDto
@@ -18,16 +20,24 @@
    private String resOrderType;
    private String description;
    private String applyOrderId;
    private String bId;
    private String state;
    private String storeId;
    private String userName;
    private String userId;
    private String stateName;
    private List<PurchaseApplyDetailVo> purchaseApplyDetailVo;
    private Date createTime;
    private String statusCd = "0";
    private String currentUserId;
    private String processInstanceId;
    private String taskId;
    private String auditCode;
    private String auditMessage;
@@ -111,4 +121,60 @@
    public void setStateName(String stateName) {
        this.stateName = stateName;
    }
    public String getCurrentUserId() {
        return currentUserId;
    }
    public void setCurrentUserId(String currentUserId) {
        this.currentUserId = currentUserId;
    }
    public String getProcessInstanceId() {
        return processInstanceId;
    }
    public void setProcessInstanceId(String processInstanceId) {
        this.processInstanceId = processInstanceId;
    }
    public String getTaskId() {
        return taskId;
    }
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }
    public String getAuditCode() {
        return auditCode;
    }
    public void setAuditCode(String auditCode) {
        this.auditCode = auditCode;
    }
    public String getAuditMessage() {
        return auditMessage;
    }
    public void setAuditMessage(String auditMessage) {
        this.auditMessage = auditMessage;
    }
    public List<PurchaseApplyDetailVo> getPurchaseApplyDetailVo() {
        return purchaseApplyDetailVo;
    }
    public void setPurchaseApplyDetailVo(List<PurchaseApplyDetailVo> purchaseApplyDetailVo) {
        this.purchaseApplyDetailVo = purchaseApplyDetailVo;
    }
    public String getbId() {
        return bId;
    }
    public void setbId(String bId) {
        this.bId = bId;
    }
}
java110-bean/src/main/java/com/java110/vo/api/purchaseApply/PurchaseApplyDetailVo.java
@@ -15,6 +15,7 @@
    private List<String> applyOrderIds;
    private String bId;
    private String operate;
    private String id;
    public String getApplyOrderId() {
@@ -104,6 +105,14 @@
    public void setOperate(String operate) {
        this.operate = operate;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
}
java110-core/src/main/java/com/java110/core/smo/purchaseApply/IPurchaseApplyInnerServiceSMO.java
@@ -32,6 +32,10 @@
    @RequestMapping(value = "/queryPurchaseApplys", method = RequestMethod.POST)
    List<PurchaseApplyDto> queryPurchaseApplys(@RequestBody PurchaseApplyDto purchaseApplyDto);
    @RequestMapping(value = "/queryPurchaseApplyAndDetails", method = RequestMethod.POST)
    List<PurchaseApplyDto> queryPurchaseApplyAndDetails(@RequestBody PurchaseApplyDto purchaseApplyDto);
    /**
     * 查询<p>小区楼</p>总记录数
     *
java110-core/src/main/java/com/java110/core/smo/purchaseApplyUser/IPurchaseApplyUserInnerServiceSMO.java
New file
@@ -0,0 +1,74 @@
package com.java110.core.smo.purchaseApplyUser;
import com.java110.core.feign.FeignConfiguration;
import com.java110.dto.auditMessage.AuditMessageDto;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.entity.audit.AuditUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
@FeignClient(name = "common-service", configuration = {FeignConfiguration.class})
@RequestMapping("/purchaseApplyUserApi")
public interface IPurchaseApplyUserInnerServiceSMO {
    /**
     * 启动流程
     *
     * @return
     */
    @RequestMapping(value = "/startProcess", method = RequestMethod.POST)
    public PurchaseApplyDto startProcess(@RequestBody PurchaseApplyDto purchaseApplyDto);
    /**
     * 查询用户任务数
     *
     * @param user
     * @return
     */
    @RequestMapping(value = "/getUserTaskCount", method = RequestMethod.POST)
    public long getUserTaskCount(@RequestBody AuditUser user);
    /**
     * 获取用户任务
     *
     * @param user 用户信息
     */
    @RequestMapping(value = "/getUserTasks", method = RequestMethod.POST)
    public List<PurchaseApplyDto> 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<PurchaseApplyDto> getUserHistoryTasks(@RequestBody AuditUser user);
    /**
     * 处理任务
     * @return true 为流程结束 false 为流程没有结束
     */
    @RequestMapping(value = "/completeTask", method = RequestMethod.POST)
    public boolean completeTask(@RequestBody PurchaseApplyDto purchaseApplyDto);
    /**
     * 查询批注信息
     * @return
     */
    @RequestMapping(value = "/getAuditMessage", method = RequestMethod.POST)
    public List<AuditMessageDto> getAuditMessage(@RequestBody PurchaseApplyDto purchaseApplyDto);
}
java110-db/src/main/resources/mapper/store/PurchaseApplyServiceDaoImplMapper.xml
@@ -4,6 +4,33 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="purchaseApplyServiceDaoImpl">
    <resultMap type="com.java110.dto.purchaseApply.PurchaseApplyDto" id="applyMap">
        <id column="applyOrderId"  property="applyOrderId"/>
        <result column="description"  property="description"/>
        <result column="resOrderType"  property="resOrderType"/>
        <result column="statusCd"  property="statusCd"/>
        <result column="state"  property="state"/>
        <result column="storeId"  property="storeId"/>
        <result column="userName"  property="userName"/>
        <result column="bId"  property="bId"/>
        <result column="userId" property="userId"/>
        <result column="createTime" property="createTime"/>
        <result column="stateName" property="stateName"/>
        <!-- 一对多关系 -->
        <collection property="purchaseApplyDetailVo" ofType="com.java110.vo.api.purchaseApply.PurchaseApplyDetailVo"  javaType="java.util.ArrayList">
            <id property="id" column="id"/>
            <result property="applyOrderId" column="applyOrderId"/>
            <result property="resId" column="resId"/>
            <result property="quantity" column="quantity"/>
            <result property="resName" column="resName"/>
            <result property="remark" column="remark"/>
            <result property="resCode" column="resCode"/>
            <result property="price" column="price"/>
            <result property="stock" column="stock"/>
        </collection>
    </resultMap>
    <!-- 保存采购申请信息 add by wuxw 2018-07-03 -->
    <insert id="saveBusinessPurchaseApplyInfo" parameterType="Map">
           insert into business_purchase_apply
@@ -144,8 +171,9 @@
            t.res_order_type resOrderType,t.description,
            t.apply_order_id applyOrderId,t.status_cd statusCd,t.state,
            t.store_id storeId,t.user_name userName,
            t.b_id bId,t.user_id userId,t.create_time createTime,d.name stateName
        from purchase_apply t inner join t_dict d on t.state = d.status_cd and d.table_name = 'purchase_apply' and d.table_columns = 'state'
            t.b_id bId,t.user_id userId,t.create_time createTime,d.name stateName,
        from purchase_apply t
        inner join t_dict d on t.state = d.status_cd and d.table_name = 'purchase_apply' and d.table_columns = 'state'
        where 1 =1
        <if test="resOrderType !=null and resOrderType != ''">
            and t.res_order_type= #{resOrderType}
@@ -179,6 +207,52 @@
    </select>
    <select id="getPurchaseApplyInfo2" parameterType="Map" resultMap="applyMap">
        select
        t.res_order_type resOrderType,t.description,
        t.apply_order_id applyOrderId,t.status_cd statusCd,t.state,
        t.store_id storeId,t.user_name userName,
        t.b_id bId,t.user_id userId,t.create_time createTime,d.name stateName,
        de.apply_order_id applyOrderId,de.res_id resId,de.quantity,de.remark,de.id,rs.res_name resName,rs.price,rs.stock,rs.res_code resCode
        from purchase_apply t
        inner join t_dict d on t.state = d.status_cd and d.table_name = 'purchase_apply' and d.table_columns = 'state'
        inner join purchase_apply_detail de on de.apply_order_id = t.apply_order_id
        inner join resource_store rs on de.res_id = rs.res_id
        where 1 =1
        <if test="resOrderType !=null and resOrderType != ''">
            and t.res_order_type= #{resOrderType}
        </if>
        <if test="description !=null and description != ''">
            and t.description= #{description}
        </if>
        <if test="applyOrderId !=null and applyOrderId != ''">
            and t.apply_order_id= #{applyOrderId}
        </if>
        <if test="userName !=null and userName != ''">
            and t.user_name like concat('%',#{userName},'%')
        </if>
        <if test="statusCd !=null and statusCd != ''">
            and t.status_cd= #{statusCd}
        </if>
        <if test="state !=null and state != ''">
            and t.state= #{state}
        </if>
        <if test="storeId !=null and storeId != ''">
            and t.store_id= #{storeId}
        </if>
        <if test="bId !=null and bId != ''">
            and t.b_id= #{bId}
        </if>
        order by t.create_time desc
        <if test="page != -1 and page != null ">
            limit #{page}, #{row}
        </if>
    </select>
    <!-- 查询采购明细 -->
    <select id="getPurchaseApplyDetailInfo" parameterType="Map" resultType="Map">
        select