Explorar o código

Merge branch 'back' of https://github.com/java110/MicroCommunity into back

java110 %!s(int64=6) %!d(string=hai) anos
pai
achega
a0373d6b93

+ 13 - 28
Api/src/main/java/com/java110/api/listener/purchaseApply/ListPurchaseApplysListener.java

@@ -73,37 +73,22 @@ public class ListPurchaseApplysListener extends AbstractServiceApiListener {
 
         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<>();

+ 12 - 0
Api/src/main/java/com/java110/api/listener/purchaseApply/SavePurchaseApplyListener.java

@@ -6,15 +6,19 @@ import com.java110.api.bmo.purchaseApply.IPurchaseApplyBMO;
 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 @@ public class SavePurchaseApplyListener extends AbstractServiceApiListener {
 
     @Autowired
     private IPurchaseApplyBMO purchaseApplyBMOImpl;
+    @Autowired
+    private IPurchaseApplyUserInnerServiceSMO iPurchaseApplyUserInnerServiceSMO;
     @Override
     protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "resourceStores", "必填,请填写申请采购的物资");
@@ -49,6 +55,12 @@ public class SavePurchaseApplyListener extends AbstractServiceApiListener {
 
         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);
     }
 

+ 306 - 0
CommonService/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java

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

+ 3 - 0
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 @@ public interface IPurchaseApplyServiceDao {
      */
     List<Map> getPurchaseApplyInfo(Map info) throws DAOException;
 
+    List<PurchaseApplyDto> getPurchaseApplyInfo2(Map info) throws DAOException;
+
 
     //查询采购明细
     List<Map> getPurchaseApplyDetailInfo(Map info) throws DAOException;

+ 10 - 0
StoreService/src/main/java/com/java110/store/dao/impl/PurchaseApplyServiceDaoImpl.java

@@ -2,6 +2,7 @@ package com.java110.store.dao.impl;
 
 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;
@@ -118,6 +119,15 @@ public class PurchaseApplyServiceDaoImpl extends BaseServiceDao implements IPurc
         return businessPurchaseApplyInfos;
     }
 
+    @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);

+ 28 - 0
StoreService/src/main/java/com/java110/store/smo/impl/PurchaseApplyInnerServiceSMOImpl.java

@@ -61,6 +61,34 @@ public class PurchaseApplyInnerServiceSMOImpl extends BaseServiceSMO implements
         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对象中
      *

+ 2 - 1
StoreService/src/main/resources/application-dev.yml

@@ -7,7 +7,7 @@ jedis:
     host: dev.redis.java110.com
     port: 6379
     timeout: 3000
-    password:
+    password: hc
 
 eureka:
   instance:
@@ -36,6 +36,7 @@ spring:
     database: 0
     host: dev.redis.java110.com
     port: 6379
+    password: hc
     pool:
       max-active: 300
       max-wait: 10000

+ 67 - 1
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,17 +20,25 @@ public class PurchaseApplyDto extends PageDto implements Serializable {
     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;
+
+
 
 
     public String getResOrderType() {
@@ -111,4 +121,60 @@ public class PurchaseApplyDto extends PageDto implements Serializable {
     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;
+    }
 }

+ 9 - 0
java110-bean/src/main/java/com/java110/vo/api/purchaseApply/PurchaseApplyDetailVo.java

@@ -15,6 +15,7 @@ public class PurchaseApplyDetailVo {
     private List<String> applyOrderIds;
     private String bId;
     private String operate;
+    private String id;
 
 
     public String getApplyOrderId() {
@@ -104,6 +105,14 @@ public class PurchaseApplyDetailVo {
     public void setOperate(String operate) {
         this.operate = operate;
     }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
 }
 
 

+ 4 - 0
java110-core/src/main/java/com/java110/core/smo/purchaseApply/IPurchaseApplyInnerServiceSMO.java

@@ -32,6 +32,10 @@ public interface IPurchaseApplyInnerServiceSMO {
     @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>总记录数
      *

+ 74 - 0
java110-core/src/main/java/com/java110/core/smo/purchaseApplyUser/IPurchaseApplyUserInnerServiceSMO.java

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

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