diff --git a/src/com/engine/organization/entity/personnelcard/po/CardButtonPO.java b/src/com/engine/organization/entity/personnelcard/po/CardButtonPO.java new file mode 100644 index 00000000..74482d8e --- /dev/null +++ b/src/com/engine/organization/entity/personnelcard/po/CardButtonPO.java @@ -0,0 +1,39 @@ +package com.engine.organization.entity.personnelcard.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @author:dxfeng + * @createTime: 2022/11/10 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CardButtonPO { + private Integer id; + + private String name; + + private Integer status; + + private String url; + + private String roles; + + private String sysDefault; + + private Long creator; + + private int deleteType; + + private Date createTime; + + private Date updateTime; +} diff --git a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java new file mode 100644 index 00000000..aa116087 --- /dev/null +++ b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.java @@ -0,0 +1,16 @@ +package com.engine.organization.mapper.personnelcard; + +import com.engine.organization.entity.personnelcard.po.CardButtonPO; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: + * @Date 2022/10/24 + * @Version V1.0 + **/ +public interface CardButtonMapper { + + List listAll(); +} diff --git a/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml new file mode 100644 index 00000000..b5d6bfb5 --- /dev/null +++ b/src/com/engine/organization/mapper/personnelcard/CardButtonMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + t + . + id + , t.name + , t.status + , t.url + , t.roles + , t.sys_default + , t.creator + , t.delete_type + , t.create_time + , t.update_time + + + + + \ No newline at end of file diff --git a/src/com/engine/organization/service/CardAccessService.java b/src/com/engine/organization/service/CardAccessService.java index 4f7b5890..8cf599b6 100644 --- a/src/com/engine/organization/service/CardAccessService.java +++ b/src/com/engine/organization/service/CardAccessService.java @@ -55,4 +55,16 @@ public interface CardAccessService { */ int updateTabName(String name,Integer id); + /** + * 卡片按钮表单 + * @return + */ + Map getCardButtonFrom(); + + /** + * 保存卡片按钮信息 + * @param params + * @return + */ + int saveCardButton(Map params); } diff --git a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java index 08adb39d..c681f981 100644 --- a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java +++ b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java @@ -3,17 +3,21 @@ package com.engine.organization.service.impl; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.core.impl.Service; import com.engine.organization.component.OrganizationWeaTable; -import com.engine.organization.entity.detach.vo.ManagerDetachVO; +import com.engine.organization.entity.extend.bo.ExtendInfoBO; +import com.engine.organization.entity.extend.po.ExtendInfoPO; import com.engine.organization.entity.personnelcard.po.CardAccessPO; +import com.engine.organization.entity.personnelcard.po.CardButtonPO; import com.engine.organization.entity.personnelcard.vo.CardAccessVO; import com.engine.organization.mapper.personnelcard.CardAccessMapper; +import com.engine.organization.mapper.personnelcard.CardButtonMapper; import com.engine.organization.service.CardAccessService; +import com.engine.organization.transmethod.SystemTransMethod; import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.db.MapperProxyFactory; import weaver.general.Util; - import java.util.*; +import java.util.stream.Collectors; /** * @Author weaver_cl @@ -29,6 +33,10 @@ public class CardAccessServiceImpl extends Service implements CardAccessService return MapperProxyFactory.getProxy(CardAccessMapper.class); } + private CardButtonMapper getCardButtonMapper() { + return MapperProxyFactory.getProxy(CardButtonMapper.class); + } + @Override public Map tablePage() { Map resultMap = new HashMap<>(); @@ -85,5 +93,44 @@ public class CardAccessServiceImpl extends Service implements CardAccessService return getCardAccessMapper().updateTabName(name,id); } + @Override + public Map getCardButtonFrom() { + // 区分主表明细表 + + String tableName = "JCL_ORG_CARDBUTTON"; + List infoPOList = new ArrayList<>(); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("name").fieldNameDesc("按钮名称").fieldType("varchar(50)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"50\"]").showOrder(1).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("status").fieldNameDesc("启用").fieldType("char(1)").controlType(1).browserType("1").customValue("[\"check\"]").showOrder(2).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("url").fieldNameDesc("跳转地址").fieldType("varchar(1000)").controlType(1).browserType("1").customValue("[\"input\",\"text\",\"1000\"]").showOrder(3).isSystemDefault(0).build()); + infoPOList.add(ExtendInfoPO.builder().id(null).tableName(tableName).fieldName("roles").fieldNameDesc("角色").fieldType("text").controlType(1).browserType("65").customValue("[\"browser\",{\"valueSpan\":\"多角色\",\"replaceDatas\":[{\"itemorderid\":\"65\",\"name\":\"多角色\",\"id\":\"65\",\"parenttitle\":\"人员\",\"title\":\"人员-多角色\"}],\"value\":\"65\"}]").showOrder(4).isSystemDefault(0).build()); + + Map tabinfoMap = new HashMap<>(); + tabinfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, infoPOList, 2, false)); + // 去除null 元素 + List cardButtonPOS = getCardButtonMapper().listAll(); + // 兼容Oracle,map的key转换为小写 + List> collect = cardButtonPOS.stream().map(item -> { + Map resultMap = new HashMap<>(); + + resultMap.put("id", item.getId()); + resultMap.put("name", item.getName()); + resultMap.put("status", item.getStatus()); + resultMap.put("url", item.getUrl()); + resultMap.put("roles", item.getRoles()); + resultMap.put("rolesspan", SystemTransMethod.getRoleName(item.getRoles())); + + return resultMap; + }).collect(Collectors.toList()); + tabinfoMap.put("datas", collect); + tabinfoMap.put("api_status", true); + + return tabinfoMap; + } + + @Override + public int saveCardButton(Map params) { + return 0; + } + } diff --git a/src/com/engine/organization/service/impl/ExtServiceImpl.java b/src/com/engine/organization/service/impl/ExtServiceImpl.java index fb9c4833..93179f7d 100644 --- a/src/com/engine/organization/service/impl/ExtServiceImpl.java +++ b/src/com/engine/organization/service/impl/ExtServiceImpl.java @@ -13,6 +13,7 @@ import com.engine.organization.entity.extend.po.ExtendTitlePO; import com.engine.organization.enums.ModuleTypeEnum; import com.engine.organization.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.extend.*; +import com.engine.organization.mapper.hrmresource.HrmResourceMapper; import com.engine.organization.service.ExtService; import com.engine.organization.util.OrganizationAssert; import com.engine.organization.util.db.DBType; @@ -67,9 +68,22 @@ public class ExtServiceImpl extends Service implements ExtService { if (StringUtils.isEmpty(fields)) { return conditionItems; } + List readOnlyFieldList = new ArrayList<>(Arrays.asList(readOnlyFields)); + //TODO 细化权限 + if ("4".equals(extendType) && !user.isAdmin()) { + String ecResourceId = MapperProxyFactory.getProxy(HrmResourceMapper.class).getEcResourceId(String.valueOf(id)); + if (Util.null2String(user.getUID()).equals(ecResourceId)) { + List readOnlyList = infoPOList.stream().filter(item -> !"1".equals(Util.null2String(item.getIsModify()))).map(ExtendInfoPO::getFieldName).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(readOnlyList)) { + readOnlyFieldList.addAll(readOnlyList); + } + } else { + viewAttr = 1; + } + } + ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName(tableName).fields(fields).params(null).id(id).build(); Map compExtMap = getExtMapper().listExt(infoParams); - List readOnlyFieldList = Arrays.asList(readOnlyFields); // 组装拓展页内容 for (ExtendInfoPO extendInfoPO : infoPOList) { SearchConditionItem item = ExtendInfoBO.getSearchConditionItem(user, viewAttr, extendInfoPO, null == compExtMap ? null : compExtMap.get(DBType.isOracle() ? extendInfoPO.getFieldName().toUpperCase() : extendInfoPO.getFieldName())); @@ -136,8 +150,19 @@ public class ExtServiceImpl extends Service implements ExtService { // 查询明细表 List extendGroupList = getExtendGroupMapper().listGroupByPid(groupId, "1"); for (ExtendGroupPO extendGroup : extendGroupList) { - infoPOList.addAll(getExtendInfoMapper().listFields(extendType, extendGroup.getId() + "", tableName, "", "1")); + List extendInfoPOS = getExtendInfoMapper().listFields(extendType, extendGroup.getId() + "", tableName, "", "1"); + if (CollectionUtils.isNotEmpty(extendInfoPOS)) { + infoPOList.addAll(extendInfoPOS); + } } + Map> allFields = infoPOList.stream().collect(Collectors.groupingBy(ExtendInfoPO::getExtendGroupId)); + //TODO 控制展示权限 + boolean checkRight = true; + if ("4".equals(extendType) && !user.isAdmin()) { + checkRight = false; + infoPOList.removeIf(item -> !"1".equals(Util.null2String(item.getIsModify()))); + } + // 查询所有分布模块,拓展明细表信息 Map> groupMap = infoPOList.stream().collect(Collectors.groupingBy(ExtendInfoPO::getExtendGroupId)); // 遍历Map,组装数据 @@ -146,11 +171,12 @@ public class ExtServiceImpl extends Service implements ExtService { tableMap.put("hide", false); tableMap.put("tabname", getExtendGroupMapper().getGroupNameById(Util.null2String(entry.getKey()))); Map tabinfoMap = new HashMap<>(); + //TODO 需优化 tabinfoMap.put("columns", ExtendInfoBO.convertInfoListToTable(user, entry.getValue(), viewAttr, showLabel)); tabinfoMap.put("rownum", "rownum" + entry.getKey()); // 浏览按钮添加filespan字段 - String fields = entry.getValue().stream().map(item -> { + String fields = allFields.get(entry.getKey()).stream().map(item -> { if (BROWSER_TYPE.equals(item.getControlType())) { return item.getFieldName() + "," + item.getFieldName() + "span"; } @@ -160,12 +186,14 @@ public class ExtServiceImpl extends Service implements ExtService { List> maps = getExtDTMapper().listCompExtDT(tableName, id, fields); maps.removeIf(Objects::isNull); // 兼容Oracle,map的key转换为小写 + boolean finalCheckRight = checkRight; List> collect = maps.stream().map(item -> { Map resultMap = new HashMap<>(); Set keys = item.keySet(); for (String key : keys) { resultMap.put(key.toLowerCase(), item.get(key)); } + resultMap.put("viewAttr", finalCheckRight ? 2 : 1); return resultMap; }).collect(Collectors.toList()); tabinfoMap.put("datas", collect); diff --git a/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java b/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java index 86809311..407cabae 100644 --- a/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmPersonnelCardServiceImpl.java @@ -229,7 +229,9 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel boolean hasAccess = false; CardAccessPO cardAccessPO = MapperProxyFactory.getProxy(CardAccessMapper.class).selectById(typeId); - OrganizationAssert.notNull(cardAccessPO, "未查询到对应卡片权限,"); + if(null==cardAccessPO){ + return false; + } // 所有人,返回true if (1 == cardAccessPO.getAllPeople()) { return true; @@ -259,9 +261,9 @@ public class HrmPersonnelCardServiceImpl extends Service implements HrmPersonnel List roleInfo = hrmCommonService.getRoleInfo(user.getUID()); for (Object o : roleInfo) { Map roleDetailMap = (Map) o; - int roleid = Util.getIntValue(roleDetailMap.get("roleid"), -1); + int roleId = Util.getIntValue(roleDetailMap.get("roleid"), -1); // 判断角色是否满足,角色等级是否满足 - hasAccess = hasAccess || accessRoleIds.contains(Util.null2String(roleid)); + hasAccess = hasAccess || accessRoleIds.contains(Util.null2String(roleId)); if (hasAccess) { break; } diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index a81c70a2..37399001 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -163,10 +163,10 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ if("joblevel".equals(importType)){ List fieldDatas = new ArrayList<>(); - fieldDatas.add(FieldTransferParam.builder().id("1").name("方案编号").build()); - fieldDatas.add(FieldTransferParam.builder().id("2").name("方案名称").build()); - fieldDatas.add(FieldTransferParam.builder().id("3").name("职级编号").build()); - fieldDatas.add(FieldTransferParam.builder().id("4").name("职级名称").build()); + fieldDatas.add(FieldTransferParam.builder().id("1").name("职级编号").build()); + fieldDatas.add(FieldTransferParam.builder().id("2").name("职级名称").build()); + fieldDatas.add(FieldTransferParam.builder().id("3").name("方案编号").build()); + fieldDatas.add(FieldTransferParam.builder().id("4").name("方案名称").build()); fieldDatas.add(FieldTransferParam.builder().id("5").name("职等编号").build()); fieldDatas.add(FieldTransferParam.builder().id("6").name("职等名称").build()); fieldDatas.add(FieldTransferParam.builder().id("7").name("方案说明").build()); diff --git a/src/com/engine/organization/service/impl/PostInfoServiceImpl.java b/src/com/engine/organization/service/impl/PostInfoServiceImpl.java index e887cff8..0fd60b62 100644 --- a/src/com/engine/organization/service/impl/PostInfoServiceImpl.java +++ b/src/com/engine/organization/service/impl/PostInfoServiceImpl.java @@ -191,13 +191,17 @@ public class PostInfoServiceImpl extends Service implements PostInfoService { topMenuList.add(MenuBtn.topMenu_addNew()); // 批量删除 topMenuList.add(MenuBtn.topMenu_batchDelete()); + topMenuList.add(MenuBtn.builder().isBatch("1").isTop("1").menuFun("import").menuIcon("icon-coms-leading-in").menuName("批量导入").type("BTN_BatchImport").build()); + btnDatas.put("topMenu", topMenuList); // 新增 rightMenuList.add(MenuBtn.rightMenu_addNew()); + rightMenuList.add(MenuBtn.builder().isBatch("1").isTop("0").menuFun("import").menuIcon("icon-coms-leading-in").menuName("批量导入").type("BTN_BatchImport").build()); // 日志 rightMenuList.add(MenuBtn.rightMenu_btnLog()); // 显示列定制 rightMenuList.add(MenuBtn.rightMenu_btnColumn()); + btnDatas.put("rightMenu", rightMenuList); return btnDatas; } diff --git a/src/com/engine/organization/util/relation/ResourceSyncUtil.java b/src/com/engine/organization/util/relation/ResourceSyncUtil.java index 9013b01b..274032ff 100644 --- a/src/com/engine/organization/util/relation/ResourceSyncUtil.java +++ b/src/com/engine/organization/util/relation/ResourceSyncUtil.java @@ -597,10 +597,12 @@ public class ResourceSyncUtil { public static Map editResourceBase(User user, Map params) { Map retMap = new HashMap<>(); try { + String id = Util.null2String(params.get("id")); + // 判断是否为本人操作 boolean canEdit = HrmUserVarify.checkUserRight("HrmResourceEdit:Edit", user); - if (!canEdit) { + if (!canEdit && !Util.null2String(user.getUID()).equals(id)) { retMap.put("status", "-1"); - retMap.put("message", ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(22620,weaver.general.ThreadVarLanguage.getLang())+""); + retMap.put("message", "" + weaver.systeminfo.SystemEnv.getHtmlLabelName(22620, weaver.general.ThreadVarLanguage.getLang()) + ""); return retMap; } RecordSet rs = new RecordSet(); @@ -610,7 +612,7 @@ public class ResourceSyncUtil { CrmShareBase CrmShareBase = new CrmShareBase(); StringBuilder para; - String id = Util.null2String(params.get("id")); + if (id.length()==0) { retMap.put("status", "-1"); retMap.put("message", ""+weaver.systeminfo.SystemEnv.getHtmlLabelName(22620,weaver.general.ThreadVarLanguage.getLang())+""); diff --git a/src/com/engine/organization/web/CardAccessController.java b/src/com/engine/organization/web/CardAccessController.java index 46634494..0dccfdaf 100644 --- a/src/com/engine/organization/web/CardAccessController.java +++ b/src/com/engine/organization/web/CardAccessController.java @@ -2,10 +2,8 @@ package com.engine.organization.web; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; -import com.engine.organization.entity.detach.param.ManagerDetachParam; import com.engine.organization.util.response.ReturnResult; import com.engine.organization.wrapper.CardAccessWrapper; -import io.swagger.v3.oas.annotations.parameters.RequestBody; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -29,7 +27,7 @@ import java.util.Map; public class CardAccessController { public CardAccessWrapper getCardAccessWrapper(User user) { - return ServiceUtil.getService(CardAccessWrapper.class,user); + return ServiceUtil.getService(CardAccessWrapper.class, user); } @@ -69,4 +67,16 @@ public class CardAccessController { return ReturnResult.exceptionHandle(e); } } + + @GET + @Path("/getCardButtonFrom") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getCardButtonFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getCardAccessWrapper(user).getCardButtonFrom()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } } diff --git a/src/com/engine/organization/wrapper/CardAccessWrapper.java b/src/com/engine/organization/wrapper/CardAccessWrapper.java index 8d9add1f..da27ef07 100644 --- a/src/com/engine/organization/wrapper/CardAccessWrapper.java +++ b/src/com/engine/organization/wrapper/CardAccessWrapper.java @@ -17,7 +17,7 @@ import java.util.Map; public class CardAccessWrapper extends OrganizationWrapper { public CardAccessService getCardAccessService(User user) { - return ServiceUtil.getService(CardAccessServiceImpl.class,user); + return ServiceUtil.getService(CardAccessServiceImpl.class, user); } public Map listPage() { @@ -31,4 +31,8 @@ public class CardAccessWrapper extends OrganizationWrapper { public int save(Map params) { return getCardAccessService(user).save(params); } + + public Map getCardButtonFrom() { + return getCardAccessService(user).getCardButtonFrom(); + } }