189 lines
7.7 KiB
Java
189 lines
7.7 KiB
Java
package com.engine.organization.service.impl;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONArray;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.engine.core.impl.Service;
|
||
import com.engine.organization.entity.DeleteParam;
|
||
import com.engine.organization.entity.extend.bo.ExtendGroupBO;
|
||
import com.engine.organization.entity.extend.param.ExtendTitleSaveParam;
|
||
import com.engine.organization.entity.extend.po.ExtendGroupPO;
|
||
import com.engine.organization.entity.extend.po.ExtendTitlePO;
|
||
import com.engine.organization.entity.fieldset.param.FieldTypeTreeParam;
|
||
import com.engine.organization.entity.fieldset.vo.TypeTreeVO;
|
||
import com.engine.organization.enums.ModuleTypeEnum;
|
||
import com.engine.organization.mapper.extend.ExtendGroupMapper;
|
||
import com.engine.organization.mapper.extend.ExtendInfoMapper;
|
||
import com.engine.organization.mapper.extend.ExtendTitleMapper;
|
||
import com.engine.organization.service.FieldDefinedService;
|
||
import com.engine.organization.util.OrganizationAssert;
|
||
import com.engine.organization.util.db.MapperProxyFactory;
|
||
import org.apache.commons.collections.CollectionUtils;
|
||
import org.apache.commons.lang.StringUtils;
|
||
|
||
import java.util.*;
|
||
import java.util.stream.Collectors;
|
||
|
||
/**
|
||
* @Author weaver_cl
|
||
* @Description:
|
||
* @Date 2022/6/13
|
||
* @Version V1.0
|
||
**/
|
||
public class FieldDefinedServiceImpl extends Service implements FieldDefinedService {
|
||
|
||
private ExtendGroupMapper getExtendGroupMapper() {
|
||
return MapperProxyFactory.getProxy(ExtendGroupMapper.class);
|
||
}
|
||
|
||
private ExtendTitleMapper getExtendTitleMapper() {
|
||
return MapperProxyFactory.getProxy(ExtendTitleMapper.class);
|
||
}
|
||
|
||
private ExtendInfoMapper getExtendInfoMapper() {
|
||
return MapperProxyFactory.getProxy(ExtendInfoMapper.class);
|
||
}
|
||
|
||
@Override
|
||
public List<TypeTreeVO> getTree(ModuleTypeEnum moduleTypeEnum) {
|
||
Integer extendType = moduleTypeEnum.getValue();
|
||
List<ExtendGroupPO> extendGroupPOS = MapperProxyFactory.getProxy(ExtendGroupMapper.class).listByType(extendType);
|
||
return ExtendGroupBO.buildTypeTree(extendGroupPOS);
|
||
}
|
||
|
||
@Override
|
||
public Map<String, Object> getTabInfo(String groupType) {
|
||
OrganizationAssert.notBlank(groupType, "分组信息有误,请确认");
|
||
Map<String, Object> datas = new HashMap<>();
|
||
Long groupId = Long.parseLong(groupType);
|
||
List<ExtendTitlePO> extendTitleList = getExtendTitleMapper().getTitlesByGroupID(groupId);
|
||
List<Map<String, Object>> tabs = new ArrayList<>();
|
||
int idx = 1;
|
||
for (ExtendTitlePO extendTitle : extendTitleList) {
|
||
Map<String, Object> tab = new HashMap<>();
|
||
tab.put("tabkey", idx++);
|
||
tab.put("title", extendTitle.getTitle());
|
||
tab.put("isShow", extendTitle.getIsShow());
|
||
tab.put("groupid", extendTitle.getGroupId());
|
||
tab.put("viewAttr", extendTitle.getGroupId() < 0 ? 1 : 2);
|
||
tab.put("editable", !(getExtendInfoMapper().countFieldsByGroupId(extendTitle.getId()) > 0));
|
||
tabs.add(tab);
|
||
}
|
||
datas.put("status", "1");
|
||
datas.put("tabs", tabs);
|
||
return datas;
|
||
}
|
||
|
||
@Override
|
||
public int saveFields(String data) {
|
||
if (StringUtils.isEmpty(data)) {
|
||
return 0;
|
||
}
|
||
JSONObject jsonObject = JSON.parseObject(data);
|
||
// extend_group主键
|
||
Long groupType = jsonObject.getLong("groupType");
|
||
ExtendGroupPO extendGroup = getExtendGroupMapper().getGroupById(groupType);
|
||
Integer extendType = extendGroup.getExtendType();
|
||
String tableName = ExtendGroupBO.getTableNameByGroupPO(extendGroup);
|
||
|
||
// 主表、主表拓展表为extend_title主键;明细表为extend_group主键
|
||
Long extendGroupId = jsonObject.getLong("groupId");
|
||
|
||
JSONArray records = (JSONArray) jsonObject.get("records");
|
||
for (int i = 0; i < records.size(); i++) {
|
||
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
@Override
|
||
public Map<String, Object> saveGroup(ExtendTitleSaveParam param) {
|
||
Map<String, Object> datas = new HashMap<>();
|
||
Long groupType = param.getGroupType();
|
||
Set<Long> lsDelGroupId = new HashSet<>();
|
||
List<ExtendTitlePO> extendTitleList = getExtendTitleMapper().getTitlesByGroupID(groupType);
|
||
extendTitleList.forEach(item -> lsDelGroupId.add(item.getId()));
|
||
String data = param.getData();
|
||
JSONObject jsonObject = JSON.parseObject(data);
|
||
Set<Long> ids = new HashSet<>();
|
||
JSONArray records = (JSONArray) jsonObject.get("records");
|
||
for (int i = 0; i < records.size(); i++) {
|
||
ExtendTitlePO extendTitle = new ExtendTitlePO();
|
||
JSONObject object = (JSONObject) records.get(i);
|
||
extendTitle.setId(object.getLong("id"));
|
||
extendTitle.setGroupId(groupType);
|
||
extendTitle.setIsShow(object.getString("isShow"));
|
||
extendTitle.setTitle(object.getString("groupName"));
|
||
extendTitle.setShowOrder(i + 1);
|
||
|
||
if (null != extendTitle.getId()) {
|
||
lsDelGroupId.remove(extendTitle.getId());
|
||
}
|
||
|
||
if (null == extendTitle.getId()) {
|
||
extendTitle.setCreator(user.getUID());
|
||
extendTitle.setCreateTime(new Date());
|
||
extendTitle.setDeleteType(0);
|
||
getExtendTitleMapper().insertIgnoreNull(extendTitle);
|
||
} else {
|
||
extendTitle.setUpdateTime(new Date());
|
||
getExtendTitleMapper().updateExtendTitle(extendTitle);
|
||
}
|
||
ids.add(extendTitle.getId());
|
||
}
|
||
if (CollectionUtils.isNotEmpty(lsDelGroupId)) {
|
||
getExtendTitleMapper().deleteExtendTitleByIds(lsDelGroupId);
|
||
}
|
||
datas.put("groupid", StringUtils.join(ids, ","));
|
||
datas.put("status", "1");
|
||
return datas;
|
||
}
|
||
|
||
@Override
|
||
public Map<String, Object> saveTitle(ExtendTitleSaveParam param) {
|
||
Map<String, Object> datas = new HashMap<>();
|
||
|
||
List<ExtendTitlePO> titlesByGroupID = getExtendTitleMapper().getTitlesByGroupID(param.getGroupType());
|
||
ExtendTitlePO extendTitlePO = titlesByGroupID.stream().max(Comparator.comparing(ExtendTitlePO::getShowOrder)).get();
|
||
Set<Long> ids = titlesByGroupID.stream().map(ExtendTitlePO::getId).collect(Collectors.toSet());
|
||
ExtendTitlePO extendTitle = new ExtendTitlePO();
|
||
extendTitle.setGroupId(param.getGroupType());
|
||
extendTitle.setIsShow(param.getIsShow());
|
||
extendTitle.setTitle(param.getGroupName());
|
||
extendTitle.setShowOrder(null == extendTitlePO ? 0 : extendTitlePO.getShowOrder() + 1);
|
||
extendTitle.setCreator(user.getUID());
|
||
extendTitle.setCreateTime(new Date());
|
||
extendTitle.setDeleteType(0);
|
||
getExtendTitleMapper().insertIgnoreNull(extendTitle);
|
||
|
||
ids.add(extendTitle.getId());
|
||
|
||
datas.put("groupid", StringUtils.join(ids, ","));
|
||
datas.put("status", "1");
|
||
return datas;
|
||
}
|
||
|
||
@Override
|
||
public void addTree(ModuleTypeEnum moduleTypeEnum, FieldTypeTreeParam fieldTypeTreeParam) {
|
||
buildExtentGroup(moduleTypeEnum, fieldTypeTreeParam);
|
||
}
|
||
|
||
@Override
|
||
public int deleteTitle(ExtendTitleSaveParam param) {
|
||
int countFields = getExtendInfoMapper().countFieldsByGroupId(param.getGroupType());
|
||
OrganizationAssert.isTrue(countFields == 0, "当前分组下仍有字段信息,请删除字段信息后删除分组");
|
||
return getExtendTitleMapper().deleteExtendTitleByIds(DeleteParam.builder().ids(param.getId().toString()).build().getIds());
|
||
}
|
||
|
||
@Override
|
||
public Map<String, Object> getFieldDefinedInfo(ExtendTitleSaveParam param) {
|
||
return null;
|
||
}
|
||
|
||
private void buildExtentGroup(ModuleTypeEnum moduleTypeEnum, FieldTypeTreeParam fieldTypeTreeParam) {
|
||
|
||
}
|
||
|
||
|
||
}
|