You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-hrm-organization/src/com/engine/organization/service/impl/CompServiceImpl.java

178 lines
8.0 KiB
Java

package com.engine.organization.service.impl;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.core.impl.Service;
import com.engine.organization.component.OrganizationWeaTable;
import com.engine.organization.entity.comp.bo.CompBO;
import com.engine.organization.entity.comp.dto.CompListDTO;
import com.engine.organization.entity.comp.param.CompSearchParam;
import com.engine.organization.entity.comp.po.CompPO;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.service.CompService;
import com.engine.organization.util.MenuBtn;
import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.OrganizationFormItemUtil;
import com.engine.organization.util.db.MapperProxyFactory;
import com.engine.organization.util.page.Column;
import com.engine.organization.util.page.PageInfo;
import com.engine.organization.util.page.PageUtil;
import weaver.general.StringUtil;
import java.util.*;
import java.util.stream.Collectors;
/**
* @description: TODO
* @author:dxfeng
* @createTime: 2022/05/16
* @version: 1.0
*/
public class CompServiceImpl extends Service implements CompService {
private CompMapper getCompMapper() {
return MapperProxyFactory.getProxy(CompMapper.class);
}
@Override
public Map<String, Object> listPage(CompSearchParam params) {
Map<String, Object> datas = new HashMap<>();
PageUtil.start(params.getCurrent(), params.getPageSize());
List<CompPO> list = getCompMapper().list(CompBO.convertParamToPO(params, (long) user.getUID()));
PageInfo<CompPO> pageInfo = new PageInfo<>(list, CompPO.class);
Collection<CompPO> compPOS = pageInfo.getList();
// 搜索条件过滤数据
List<CompPO> filterList = filterListByParams(compPOS, params);
// 递归添加父级数据
Map<Long, CompPO> poMaps = list.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
List<CompPO> addedList = new ArrayList<>();
for (CompPO po : filterList) {
dealParentData(addedList, po, poMaps);
}
List<CompListDTO> compListDTOS = CompBO.buildCompDTOList(addedList);
PageInfo<CompListDTO> pageInfos = new PageInfo<>(compListDTOS, CompListDTO.class);
pageInfos.setTotal(pageInfos.getTotal());
pageInfos.setPageNum(params.getCurrent());
pageInfos.setPageSize(params.getPageSize());
OrganizationWeaTable<CompListDTO> table = new OrganizationWeaTable<>(user, CompListDTO.class);
List<Column> columns = pageInfos.getColumns();
List<WeaTableColumn> weaTableColumn = columns.stream().map(v -> new WeaTableColumn("100", v.getTitle(), v.getKey())).collect(Collectors.toList());
table.setColumns(weaTableColumn);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
datas.put("pageInfo", pageInfos);
datas.put("dataKey", result.getResultMap());
return datas;
}
@Override
public int updateForbiddenTagById(CompSearchParam params) {
CompPO compPO = CompPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build();
return getCompMapper().updateForbiddenTagById(compPO);
}
@Override
public int deleteByIds(Collection<Long> ids) {
OrganizationAssert.notEmpty(ids, "请选择要删除的数据");
return getCompMapper().deleteByIds(ids);
}
@Override
public Map<String, Object> getSearchCondition(Map<String, Object> params) {
Map<String, Object> apiDatas = new HashMap<>();
List<SearchConditionGroup> addGroups = new ArrayList<>();
List<SearchConditionItem> conditionItems = new ArrayList<>();
// 编号
SearchConditionItem compNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "编号", "compNo");
// 名称
SearchConditionItem compNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "名称", "compName");
// 简称
SearchConditionItem compNameShortItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "简称", "compNameShort");
// TODO
// 上级公司
SearchConditionItem compBrowserItem = OrganizationFormItemUtil.browserItem(user, 2, 16, 2, false, "上级公司", "161", "parentCompany", "compBrowser");
// 组织机构代码
SearchConditionItem orgCodeItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "组织机构代码", "orgCode");
// 行业
SearchConditionItem industryItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "行业", "industry");
// 负责人
SearchConditionItem compPrincipalItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 2, 50, "负责人", "compPrincipal");
// 禁用标记
List<SearchConditionOption> selectOptions = new ArrayList<>();
SearchConditionOption enableOption = new SearchConditionOption("0", "启用");
SearchConditionOption disableOption = new SearchConditionOption("1", "禁用");
selectOptions.add(enableOption);
selectOptions.add(disableOption);
SearchConditionItem forbiddenTagItem = OrganizationFormItemUtil.selectItem(user, selectOptions, 2, 16, 6, false, "禁用标记", "forbiddenTag");
conditionItems.add(compNoItem);
conditionItems.add(compNameItem);
conditionItems.add(compNameShortItem);
conditionItems.add(compBrowserItem);
conditionItems.add(orgCodeItem);
conditionItems.add(industryItem);
conditionItems.add(compPrincipalItem);
conditionItems.add(forbiddenTagItem);
addGroups.add(new SearchConditionGroup("高级搜索条件", true, conditionItems));
apiDatas.put("conditions", addGroups);
return apiDatas;
}
@Override
public Map<String, Object> getHasRight() {
return MenuBtn.getCommonBtnDatas();
}
private List<CompPO> filterListByParams(Collection<CompPO> compPOS, CompSearchParam params) {
// 搜索后的数据
List<CompPO> filterList = new ArrayList<>();
// 筛选数据
for (Iterator<CompPO> iterator = compPOS.iterator(); iterator.hasNext(); ) {
CompPO next = iterator.next();
boolean isAdd = (StringUtil.isEmpty(params.getCompName()) || next.getCompName().contains(params.getCompName())) // 名称
&& (StringUtil.isEmpty(params.getCompNo()) || next.getCompNo().contains(params.getCompNo()))//编号
&& (StringUtil.isEmpty(params.getCompNameShort()) || next.getCompNameShort().contains(params.getCompNameShort()))//简称
&& (null == params.getParentCompany() || next.getParentCompany().equals(params.getParentCompany()))//上级公司
&& (StringUtil.isEmpty(params.getOrgCode()) || next.getOrgCode().contains(params.getOrgCode()))//组织机构代码
&& (null == params.getIndustry() || next.getIndustry().equals(params.getIndustry()))//行业
&& (null == params.getCompPrincipal() || next.getCompPrincipal().equals(params.getCompPrincipal()))//负责人
&& (null == params.getForbiddenTag() || next.getForbiddenTag().equals(params.getForbiddenTag()));//禁用标记
if (isAdd) {
filterList.add(next);
}
}
return filterList;
}
/**
*
*
* @param addedList
* @param po
* @param poMaps
*/
private void dealParentData(List<CompPO> addedList, CompPO po, Map<Long, CompPO> poMaps) {
if (!addedList.contains(po)) {
addedList.add(po);
}
CompPO parentCompPO = poMaps.get(po.getParentCompany());
if (null != parentCompPO) {
dealParentData(addedList, parentCompPO, poMaps);
}
}
}