java110
2022-08-18 551ad62ae01a166a20ebe981372293b78568d62c
优化查询bug
4个文件已修改
155 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/org/OrgStaffRelDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-interface/src/main/java/com/java110/intf/store/IOrgStaffRelV1InnerServiceSMO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/bmo/workflow/impl/QueryWorkFlowFirstStaffBMOImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/org/OrgStaffRelDto.java
@@ -36,6 +36,8 @@
    private String parentOrgId;
    private String parentOrgName;
    private String orgLevel;
    private Date createTime;
@@ -178,4 +180,12 @@
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public String getOrgLevel() {
        return orgLevel;
    }
    public void setOrgLevel(String orgLevel) {
        this.orgLevel = orgLevel;
    }
}
java110-interface/src/main/java/com/java110/intf/store/IOrgStaffRelV1InnerServiceSMO.java
@@ -57,6 +57,10 @@
    @RequestMapping(value = "/queryOrgStaffRels", method = RequestMethod.POST)
    List<OrgStaffRelDto> queryOrgStaffRels(@RequestBody OrgStaffRelDto orgStaffRelDto);
    @RequestMapping(value = "/queryStaffOrgNames", method = RequestMethod.POST)
    public List<OrgStaffRelDto> queryStaffOrgNames(@RequestBody OrgStaffRelDto orgStaffRelDto);
    /**
     * 查询<p>小区楼</p>总记录数
     *
service-common/src/main/java/com/java110/common/bmo/workflow/impl/QueryWorkFlowFirstStaffBMOImpl.java
@@ -15,11 +15,13 @@
import com.java110.dto.oaWorkflowForm.OaWorkflowFormDto;
import com.java110.dto.oaWorkflowXml.OaWorkflowXmlDto;
import com.java110.dto.org.OrgDto;
import com.java110.dto.org.OrgStaffRelDto;
import com.java110.dto.workflow.WorkflowDto;
import com.java110.dto.workflow.WorkflowModelDto;
import com.java110.intf.oa.IOaWorkflowFormInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowXmlInnerServiceSMO;
import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
import com.java110.intf.user.IOrgInnerServiceSMO;
import com.java110.po.oaWorkflow.OaWorkflowPo;
import com.java110.po.oaWorkflowXml.OaWorkflowXmlPo;
@@ -79,6 +81,9 @@
    private IOaWorkflowFormInnerServiceSMO oaWorkflowFormInnerServiceSMOImpl;
    @Autowired
    private IOrgStaffRelV1InnerServiceSMO orgStaffRelV1InnerServiceSMOImpl;
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
@@ -129,16 +134,19 @@
        Map staffInfo = workflowStepStaffs.get(0);
        String staffId = staffInfo.get("staffId") + "";
        OrgDto orgDto = new OrgDto();
        OrgStaffRelDto orgDto = new OrgStaffRelDto();
        if (staffId.startsWith("${")) {
            return ResultVo.createResponseEntity(orgDto);
        }
        orgDto.setStaffId(staffId);
        List<OrgDto> orgDtos = orgInnerServiceSMOImpl.queryOrgs(orgDto);
        if (orgDtos == null || orgDtos.size() < 1) {
        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
        orgStaffRelDto.setStaffId(staffId);
        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryStaffOrgNames(orgStaffRelDto);
        if (orgStaffRelDtos == null || orgStaffRelDtos.size() < 1) {
            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "未查询到员工组织信息");
        }
        orgDto = orgDtos.get(0);
        orgDto = orgStaffRelDtos.get(0);
        orgDto.setStaffName(staffInfo.get("staffName") + "");
        return ResultVo.createResponseEntity(orgDto);
service-store/src/main/java/com/java110/store/smo/impl/OrgStaffRelV1InnerServiceSMOImpl.java
@@ -16,14 +16,18 @@
package com.java110.store.smo.impl;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.dto.PageDto;
import com.java110.dto.org.OrgDto;
import com.java110.dto.org.OrgStaffRelDto;
import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
import com.java110.intf.user.IOrgV1InnerServiceSMO;
import com.java110.po.org.OrgStaffRelPo;
import com.java110.store.dao.IOrgStaffRelV1ServiceDao;
import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.dto.user.UserDto;
import com.java110.dto.PageDto;
import com.java110.utils.util.StringUtil;
import com.java110.vo.api.staff.ApiStaffDataVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@@ -45,6 +49,9 @@
    @Autowired
    private IOrgStaffRelV1ServiceDao orgStaffRelV1ServiceDaoImpl;
    @Autowired
    private IOrgV1InnerServiceSMO orgV1InnerServiceSMOImpl;
    @Override
    public int saveOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
@@ -52,17 +59,17 @@
        return saveFlag;
    }
     @Override
    public int updateOrgStaffRel(@RequestBody  OrgStaffRelPo orgStaffRelPo) {
    @Override
    public int updateOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
        int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
        return saveFlag;
    }
     @Override
    public int deleteOrgStaffRel(@RequestBody  OrgStaffRelPo orgStaffRelPo) {
       orgStaffRelPo.setStatusCd("1");
       int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
       return saveFlag;
    @Override
    public int deleteOrgStaffRel(@RequestBody OrgStaffRelPo orgStaffRelPo) {
        orgStaffRelPo.setStatusCd("1");
        int saveFlag = orgStaffRelV1ServiceDaoImpl.updateOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelPo));
        return saveFlag;
    }
    @Override
@@ -81,9 +88,103 @@
        return orgStaffRels;
    }
    @Override
    public List<OrgStaffRelDto> queryStaffOrgNames(@RequestBody OrgStaffRelDto orgStaffRelDto) {
        //校验是否传了 分页信息
        int page = orgStaffRelDto.getPage();
        if (page != PageDto.DEFAULT_PAGE) {
            orgStaffRelDto.setPage((page - 1) * orgStaffRelDto.getRow());
        }
        List<OrgStaffRelDto> orgStaffRels = BeanConvertUtil.covertBeanList(orgStaffRelV1ServiceDaoImpl.getOrgStaffRelInfo(BeanConvertUtil.beanCovertMap(orgStaffRelDto)), OrgStaffRelDto.class);
        if (orgStaffRels == null || orgStaffRels.size() < 1) {
            return orgStaffRels;
        }
        refreshOrgs(orgStaffRels);
        return orgStaffRels;
    }
    private void refreshOrgs(List<OrgStaffRelDto> staffs) {
        if (staffs == null || staffs.size() < 1) {
            return;
        }
        List<String> staffIds = new ArrayList<>();
        for (OrgStaffRelDto apiStaffDataVo : staffs) {
            staffIds.add(apiStaffDataVo.getStaffId());
        }
        OrgDto orgDto = new OrgDto();
        orgDto.setStoreId(staffs.get(0).getStoreId());
        List<OrgDto> orgDtos = orgV1InnerServiceSMOImpl.queryOrgs(orgDto);
        if (orgDtos == null || orgDtos.size() < 1) {
            return;
        }
        for (OrgStaffRelDto apiStaffDataVo : staffs) {
            if (StringUtil.isEmpty(apiStaffDataVo.getOrgId())) {
                continue;
            }
            apiStaffDataVo.setParentOrgId(apiStaffDataVo.getOrgId());
            findParents(apiStaffDataVo, orgDtos, null, 0);
        }
    }
    private void findParents(OrgStaffRelDto apiStaffDataVo, List<OrgDto> orgDtos, OrgDto curOrgDto, int orgDeep) {
        for (OrgDto orgDto : orgDtos) {
            curOrgDto = orgDto;
            if (!apiStaffDataVo.getParentOrgId().equals(orgDto.getOrgId())) { // 他自己跳过
                continue;
            }
            //如果到一级 就结束
            if (OrgDto.ORG_LEVEL_STORE.equals(apiStaffDataVo.getOrgLevel())) {
                continue;
            }
            apiStaffDataVo.setParentOrgId(orgDto.getParentOrgId());
            if (StringUtil.isEmpty(apiStaffDataVo.getOrgName())) {
                apiStaffDataVo.setOrgName(orgDto.getOrgName());
                continue;
            }
            apiStaffDataVo.setOrgName(orgDto.getOrgName() + " / " + apiStaffDataVo.getOrgName());
            apiStaffDataVo.setOrgLevel(orgDto.getOrgLevel());
        }
        if (curOrgDto != null && OrgDto.ORG_LEVEL_STORE.equals(curOrgDto.getOrgLevel())) {
            return;
        }
        if (curOrgDto != null && curOrgDto.getParentOrgId().equals(curOrgDto.getOrgId())) {
            return;
        }
        if (curOrgDto != null && "-1".equals(curOrgDto.getParentOrgId())) {
            return;
        }
        orgDeep += 1;
        if (orgDeep > 20) {
            return;
        }
        findParents(apiStaffDataVo, orgDtos, curOrgDto, orgDeep);
    }
    @Override
    public int queryOrgStaffRelsCount(@RequestBody OrgStaffRelDto orgStaffRelDto) {
        return orgStaffRelV1ServiceDaoImpl.queryOrgStaffRelsCount(BeanConvertUtil.beanCovertMap(orgStaffRelDto));    }
        return orgStaffRelV1ServiceDaoImpl.queryOrgStaffRelsCount(BeanConvertUtil.beanCovertMap(orgStaffRelDto));
    }
}