java110
2020-07-14 7207e75881349b2a4c8abbb67b27c4a07381f4c3
优化采购申请功能
13个文件已修改
172 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/purchaseApply/PurchaseApplyDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/resourceOrder/ApiResourceOrderDataVo.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/center/CenterServiceDAOImplMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/store/PurchaseApplyServiceDaoImplMapper.xml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/listener/auditOrder/ListAuditOrdersListener.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/listener/purchaseApply/AuditApplyOrderListener.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/ResourceEntryStoreInnerServiceSMOImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-order/src/main/java/com/java110/order/smo/impl/AbstractOrderServiceSMOImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/api/PurchaseApi.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/smo/impl/PurchaseApplyInnerServiceSMOImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/resources/application-dev.yml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/purchaseApply/PurchaseApplyDto.java
@@ -21,6 +21,7 @@
    public static final String RES_ORDER_TYPE_OUT = "20000"; //出库
    public static final String STATE_WAIT_DEAL = "1000"; // 等待处理
    public static final String STATE_DEALING = "1001"; // 审核中
    private String resOrderType;
    private String description;
java110-bean/src/main/java/com/java110/vo/api/resourceOrder/ApiResourceOrderDataVo.java
@@ -1,7 +1,6 @@
package com.java110.vo.api.resourceOrder;
import java.io.Serializable;
import java.util.Date;
public class ApiResourceOrderDataVo implements Serializable {
@@ -9,6 +8,9 @@
    private String processInstanceId;
    private String taskId;
    private String userId;
    private String userName;
    //订单ID
@@ -118,4 +120,20 @@
    public void setStateName(String stateName) {
        this.stateName = stateName;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}
java110-db/src/main/resources/mapper/center/CenterServiceDAOImplMapper.xml
@@ -71,7 +71,7 @@
    <update id="updateOrderItem" parameterType="Map">
        update c_order_item t
        set t.finish_time = #{finishTime},
             t.status_cd = #{statusCd}
        t.status_cd = #{statusCd}
        where t.o_id = #{oId}
        <if test="bId !=null and bId != ''">
            and t.b_id = #{bId}
@@ -85,7 +85,6 @@
            and t.b_id = #{bId}
        </if>
    </update>
    <!-- 保存订单项信息 c_business -->
@@ -119,14 +118,11 @@
    </update>
    <!-- 更新订单项信息(一般就更新订单项状态)-->
    <update id="updateBusiness" parameterType="Map">
        <![CDATA[
                    update c_business cb set
                    cb.status_cd=#{statusCd},
                    cb.finish_time=#{finishTime}
                    where cb.o_id=#{oId}
        ]]>
        update c_business cb set
        cb.status_cd=#{statusCd},
        cb.finish_time=#{finishTime}
        where cb.o_id=#{oId}
    </update>
    <!--根据bId 修改业务项信息-->
    <update id="updateBusinessByBId" parameterType="Map">
java110-db/src/main/resources/mapper/store/PurchaseApplyServiceDaoImplMapper.xml
@@ -191,7 +191,8 @@
            t.end_user_name,
            t.end_user_tel,
            t.end_user_name endUserName,
            t.end_user_tel endUserTel
            t.end_user_tel endUserTel,
            t.description
        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
@@ -203,6 +204,14 @@
        </if>
        <if test="applyOrderId !=null and applyOrderId != ''">
            and t.apply_order_id= #{applyOrderId}
        </if>
        <if test="applyOrderIds !=null ">
            and t.apply_order_id in
            <foreach open="(" close=")"
                     separator="," collection="applyOrderIds" item="item">
                #{item}
            </foreach>
        </if>
        <if test="userName !=null and userName != ''">
            and t.user_name like concat('%',#{userName},'%')
@@ -292,8 +301,9 @@
            r.res_name resName,r.res_code resCode,
            r.price,r.stock
        from
            purchase_apply_detail p inner join resource_store r on p.res_id = r.res_id
            purchase_apply_detail p inner join resource_store r on p.res_id = r.res_id and r.status_cd = '0'
        where 1=1
        and p.status_cd = '0'
        <if test="applyOrderIds !=null">
            and p.apply_order_id in
            <foreach collection="applyOrderIds" item="item" open="(" close=")" separator=",">
service-api/src/main/java/com/java110/api/listener/auditOrder/ListAuditOrdersListener.java
@@ -73,6 +73,7 @@
        auditUser.setUserId(reqJson.getString("userId"));
        auditUser.setPage(reqJson.getInteger("page"));
        auditUser.setRow(reqJson.getInteger("row"));
        auditUser.setStoreId(reqJson.getString("storeId"));
        long count = resourceEntryStoreInnerServiceSMOImpl.getUserTaskCount(auditUser);
service-api/src/main/java/com/java110/api/listener/purchaseApply/AuditApplyOrderListener.java
@@ -5,11 +5,10 @@
import com.java110.api.listener.AbstractServiceApiPlusListener;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
import com.java110.intf.common.IPurchaseApplyUserInnerServiceSMO;
import com.java110.dto.complaint.ComplaintDto;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.core.event.service.api.ServiceDataFlowEvent;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.intf.common.IPurchaseApplyUserInnerServiceSMO;
import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
import com.java110.po.purchase.PurchaseApplyPo;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ServiceCodePurchaseApplyConstant;
@@ -74,6 +73,13 @@
        purchaseApplyDto.setAuditMessage(reqJson.getString("remark"));
        purchaseApplyDto.setCurrentUserId(reqJson.getString("userId"));
        PurchaseApplyDto tmpPurchaseApplyDto = new PurchaseApplyDto();
        tmpPurchaseApplyDto.setApplyOrderId(reqJson.getString("applyOrderId"));
        tmpPurchaseApplyDto.setStoreId(reqJson.getString("storeId"));
        List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(tmpPurchaseApplyDto);
        Assert.listOnlyOne(purchaseApplyDtos, "采购申请单存在多条");
        purchaseApplyDto.setStartUserId(purchaseApplyDtos.get(0).getUserId());
        boolean isLastTask = purchaseApplyUserInnerServiceSMOImpl.completeTask(purchaseApplyDto);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>("成功", HttpStatus.OK);
        if (isLastTask) {
@@ -90,14 +96,13 @@
     */
    private void updatePurchaseApply(JSONObject paramInJson, DataFlowContext dataFlowContext) {
        ComplaintDto complaintDto = new ComplaintDto();
        complaintDto.setStoreId(paramInJson.getString("storeId"));
        complaintDto.setCommunityId(paramInJson.getString("communityId"));
        complaintDto.setComplaintId(paramInJson.getString("complaintId"));
        PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto();
        purchaseApplyDto.setStoreId(paramInJson.getString("storeId"));
        purchaseApplyDto.setApplyOrderId(paramInJson.getString("applyOrderId"));
        List<PurchaseApplyDto> purchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplys(purchaseApplyDto);
        Assert.listOnlyOne(purchaseApplyDtos, "存在多条记录,或不存在数据" + complaintDto.getComplaintId());
        Assert.listOnlyOne(purchaseApplyDtos, "存在多条记录,或不存在数据" + purchaseApplyDto.getApplyOrderId());
        JSONObject businessComplaint = new JSONObject();
        businessComplaint.putAll(BeanConvertUtil.beanCovertMap(purchaseApplyDtos.get(0)));
service-common/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java
@@ -78,6 +78,7 @@
        variables.put("purchaseApplyDto", purchaseApplyDto);
        variables.put("nextAuditStaffId", purchaseApplyDto.getStaffId());
        variables.put("userId", purchaseApplyDto.getCurrentUserId());
        variables.put("startUserId", purchaseApplyDto.getCurrentUserId());
        //开启流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(purchaseApplyDto.getStoreId()), purchaseApplyDto.getApplyOrderId(), variables);
//        //将得到的实例流程id值赋给之前设置的变量
@@ -137,7 +138,7 @@
     */
    public long getUserTaskCount(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId()));
        query.taskAssignee(user.getUserId());
        return query.count();
    }
@@ -149,7 +150,7 @@
     */
    public List<PurchaseApplyDto> getUserTasks(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEnter");
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId()));
        ;
        query.taskAssignee(user.getUserId());
        query.orderByTaskCreateTime().desc();
@@ -206,7 +207,7 @@
//                .taskAssignee(user.getUserId());
        HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
                .processDefinitionKey("resourceEnter")
                .processDefinitionKey(getWorkflowDto(user.getStoreId()))
                .taskAssignee(user.getUserId());
        if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) {
            historicTaskInstanceQuery.taskName("resourceEnter");
@@ -275,11 +276,7 @@
        variables.put("currentUserId", purchaseApplyDto.getCurrentUserId());
        variables.put("flag", "1200".equals(purchaseApplyDto.getAuditCode()) ? "false" : "true");
        variables.put("startUserId", purchaseApplyDto.getStartUserId());
        //taskService.setAssignee(complaintDto.getTaskId(),complaintDto.getCurrentUserId());
        //taskService.addCandidateUser(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
        //taskService.claim(complaintDto.getTaskId(), complaintDto.getCurrentUserId());
        taskService.complete(purchaseApplyDto.getTaskId(), variables);
        //taskService.setVariable(purchaseApplyDto.getTaskId(), "purchaseApplyDto", purchaseApplyDto);
        ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
        if (pi == null) {
service-common/src/main/java/com/java110/common/smo/impl/ResourceEntryStoreInnerServiceSMOImpl.java
@@ -2,12 +2,16 @@
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.dto.workflow.WorkflowDto;
import com.java110.intf.common.IResourceEntryStoreInnerServiceSMO;
import com.java110.intf.common.IWorkflowInnerServiceSMO;
import com.java110.intf.store.IPurchaseApplyInnerServiceSMO;
import com.java110.dto.PageDto;
import com.java110.dto.purchaseApply.PurchaseApplyDto;
import com.java110.dto.resourceStore.ResourceOrderDto;
import com.java110.entity.audit.AuditUser;
import com.java110.utils.util.Assert;
import com.java110.utils.util.StringUtil;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
@@ -39,6 +43,9 @@
    @Autowired
    private IPurchaseApplyInnerServiceSMO purchaseApplyInnerServiceSMOImpl;
    @Autowired
    private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl;
    /**
     * 启动流程
@@ -49,8 +56,9 @@
        //将信息加入map,以便传入流程中
        Map<String, Object> variables = new HashMap<String, Object>();
        variables.put("resourceOrderDto", resourceOrderDto);
        //开启流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("resourceEntry", variables);
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(resourceOrderDto.getStoreId()), variables);
        //将得到的实例流程id值赋给之前设置的变量
        String processInstanceId = processInstance.getId();
        // System.out.println("流程开启成功.......实例流程id:" + processInstanceId);
@@ -68,7 +76,7 @@
     */
    public long getUserTaskCount(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEntry");
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId()));
        query.taskAssignee(user.getUserId());
        return query.count();
    }
@@ -80,7 +88,7 @@
     */
    public List<PurchaseApplyDto> getUserTasks(@RequestBody AuditUser user) {
        TaskService taskService = processEngine.getTaskService();
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEntry");
        TaskQuery query = taskService.createTaskQuery().processDefinitionKey(getWorkflowDto(user.getStoreId()));
        query.taskAssignee(user.getUserId());
        query.orderByTaskCreateTime().desc();
        List<Task> list = null;
@@ -159,8 +167,28 @@
        TaskService taskService = processEngine.getTaskService();
        taskService.complete(resourceOrderDto.getTaskId());
        return true;
    }
    private String getWorkflowDto(String storeId) {
        //开启流程
        //WorkflowDto.DEFAULT_PROCESS + workflowDto.getFlowId()
        WorkflowDto workflowDto = new WorkflowDto();
        workflowDto.setFlowType(WorkflowDto.FLOW_TYPE_PURCHASE);
        workflowDto.setStoreId(storeId);
        List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto);
        Assert.listOnlyOne(workflowDtos, "未找到 投诉建议流程或找到多条");
        WorkflowDto tmpWorkflowDto = workflowDtos.get(0);
        if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) {
            throw new IllegalArgumentException("流程还未部署");
        }
        return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId();
    }
}
service-order/src/main/java/com/java110/order/smo/impl/AbstractOrderServiceSMOImpl.java
@@ -361,7 +361,7 @@
        centerServiceDaoImpl.updateOrder(OrderDataFlowContextFactory.getNeedInvalidOrder(dataFlow));
        //作废订单项
        centerServiceDaoImpl.updateBusiness(OrderDataFlowContextFactory.getNeedDeleteBusiness(dataFlow,deleteBusinesses));
        centerServiceDaoImpl.updateBusinessByBId(OrderDataFlowContextFactory.getNeedDeleteBusiness(dataFlow,deleteBusinesses));
        //加入撤单记录
        //doAddDeleteOrderBusinessData(dataFlow);
service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
@@ -245,7 +245,7 @@
            param = new JSONObject();
            JSONObject keyValue = afterValues.getJSONObject(preValueIndex);
            for (String key : keyValue.keySet()) {
                if (StringUtil.isEmpty(keyValue.getString(key))) {
                if (!StringUtil.isEmpty(keyValue.getString(key))) {
                    sql += (" and " + key + "=" + keyValue.getString(key));
                }
            }
service-store/src/main/java/com/java110/store/api/PurchaseApi.java
@@ -54,7 +54,7 @@
        purchaseApplyPo.setEndUserTel(reqJson.getString("endUserTel"));
        purchaseApplyPo.setStoreId(storeId);
        purchaseApplyPo.setResOrderType(PurchaseApplyDto.RES_ORDER_TYPE_ENTER);
        purchaseApplyPo.setState(PurchaseApplyDto.STATE_WAIT_DEAL);
        purchaseApplyPo.setState(PurchaseApplyDto.STATE_DEALING);
        JSONArray resourceStores = reqJson.getJSONArray("resourceStores");
service-store/src/main/java/com/java110/store/smo/impl/PurchaseApplyInnerServiceSMOImpl.java
@@ -10,15 +10,17 @@
import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.po.purchase.PurchaseApplyDetailPo;
import com.java110.po.purchase.PurchaseApplyPo;
import com.java110.po.purchase.ResourceStorePo;
import com.java110.store.dao.IPurchaseApplyServiceDao;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.vo.api.purchaseApply.PurchaseApplyDetailVo;
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;
/**
 * @ClassName FloorInnerServiceSMOImpl
@@ -95,11 +97,14 @@
            purchaseApplyDto.setPage((page - 1) * purchaseApplyDto.getRow());
        }
        List<PurchaseApplyDto> purchaseApplys = purchaseApplyServiceDaoImpl.getPurchaseApplyInfo2(BeanConvertUtil.beanCovertMap(purchaseApplyDto));
        List<PurchaseApplyDto> purchaseApplys = BeanConvertUtil.covertBeanList(
                purchaseApplyServiceDaoImpl.getPurchaseApplyInfo(BeanConvertUtil.beanCovertMap(purchaseApplyDto)), PurchaseApplyDto.class);
        if (purchaseApplys == null || purchaseApplys.size() == 0) {
            return purchaseApplys;
        }
        freshPurchaseApplyDetail(purchaseApplys);
        String[] userIds = getUserIds(purchaseApplys);
        //根据 userId 查询用户信息
@@ -111,6 +116,38 @@
        return purchaseApplys;
    }
    private void freshPurchaseApplyDetail(List<PurchaseApplyDto> purchaseApplys) {
        List<String> applyOrderIds = new ArrayList<String>();
        for (PurchaseApplyDto purchaseApplyDto : purchaseApplys) {
            applyOrderIds.add(purchaseApplyDto.getApplyOrderId());
        }
        if (applyOrderIds.size() < 1) {
            return;
        }
        String[] tmpApplyOrderIds = applyOrderIds.toArray(new String[applyOrderIds.size()]);
        Map info = new HashMap<>();
        info.put("applyOrderIds", tmpApplyOrderIds);
        List<Map> details = purchaseApplyServiceDaoImpl.getPurchaseApplyDetailInfo(info);
        List<PurchaseApplyDetailDto> purchaseApplyDetailDtos = BeanConvertUtil.covertBeanList(details, PurchaseApplyDetailDto.class);
        List<PurchaseApplyDetailDto> purchaseApplyDetailDtoList = null;
        for (PurchaseApplyDto purchaseApplyDto : purchaseApplys) {
            purchaseApplyDetailDtoList = new ArrayList<>();
            for (PurchaseApplyDetailDto purchaseApplyDetailDto : purchaseApplyDetailDtos) {
                if (purchaseApplyDto.getApplyOrderId().equals(purchaseApplyDetailDto.getApplyOrderId())) {
                    purchaseApplyDetailDtoList.add(purchaseApplyDetailDto);
                }
            }
            purchaseApplyDto.setPurchaseApplyDetailVo(BeanConvertUtil.covertBeanList(purchaseApplyDetailDtoList, PurchaseApplyDetailVo.class));
        }
    }
    /**
     * 从用户列表中查询用户,将用户中的信息 刷新到 floor对象中
service-store/src/main/resources/application-dev.yml
@@ -64,6 +64,13 @@
    maxActive: 20
    username: TT
feign:
  client:
    config:
      default:
        connect-timeout: 10000
        read-timeout: 20000
#============== kafka ===================
kafka:
  consumer: