From 74472c9d22dddcb41383794caf0011043b20f817 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期二, 31 三月 2020 13:25:47 +0800 Subject: [PATCH] fix 数据权限 --- src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 100 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java index a7758db..8e966ee 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java @@ -5,17 +5,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.highdatas.mdm.entity.Flows; -import com.highdatas.mdm.entity.Maintain; -import com.highdatas.mdm.entity.MaintainField; -import com.highdatas.mdm.entity.SysField; +import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.MaintainFieldMapper; import com.highdatas.mdm.pojo.ActivitiStatus; import com.highdatas.mdm.pojo.Operate; -import com.highdatas.mdm.service.IFlowsService; -import com.highdatas.mdm.service.IMaintainFieldService; -import com.highdatas.mdm.service.IMaintainService; -import com.highdatas.mdm.service.ISysFieldService; +import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import org.apache.commons.lang3.StringUtils; @@ -42,10 +36,12 @@ IFlowsService flowsService; @Autowired ISysFieldService fieldService; - @Autowired MaintainFieldMapper maintainFieldMapper; - + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + IMasterAuthorDetailService masterAuthorDetailService; @Override public MaintainField getNextMaintain(String tableName, String userId) { MaintainField maintain = this.getMaxVersion(tableName); @@ -195,20 +191,66 @@ maintainField.deleteById(); } else if (status.equals(ActivitiStatus.open)) { + + Integer orderNo = maintainField.getOrderNo(); + int preNo = orderNo - 1; + if (preNo< 0) { + return; + } + MaintainField preMaintainField = selectOne(new EntityWrapper<MaintainField>() + .eq("table_name", maintainField.getTableName()) + .eq("order_no", preNo)); + if (preMaintainField == null){ + return; + } + List<MasterAuthor> masterAuthors = masterAuthorService.selectList( + new EntityWrapper<MasterAuthor>() + .eq("maintain_auto", true) + .eq("table_name", maintainField.getTableName()) + .eq("maintain_field_id", preMaintainField.getId())); + if (masterAuthors.isEmpty()) { + return; + } List<SysField> fieldList = fieldService.selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainField.getId())); - List<SysField> collect = fieldList.stream().filter(sysField -> Operate.delete.equals(sysField.getOperate())).collect(Collectors.toList()); - //delete - for (SysField field : collect) { + List<SysField> deleteList = fieldList.stream().filter(sysField -> Operate.delete.equals(sysField.getOperate())).collect(Collectors.toList()); + List<SysField> updateList = fieldList.stream().filter(sysField -> (Operate.update.equals(sysField.getOperate()))).collect(Collectors.toList()); + List<SysField> createList = fieldList.stream().filter(sysField -> (Operate.create.equals(sysField.getOperate()))).collect(Collectors.toList()); + + List<String> createFieldList = createList.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + + + for (MasterAuthor masterAuthor : masterAuthors) { + Boolean fieldAuto = masterAuthor.getFieldAuto(); + masterAuthor.setMaintainFieldId(maintainField.getId()) + .setCreateTime(new Date()) + .setUpdateTime(null) + .setId(DbUtils.getUUID()) + .insert(); + List<MasterAuthorDetail> masterAuthorDetails = masterAuthorDetailService.selectList(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, preMaintainField.getId())); + + for (MasterAuthorDetail masterAuthorDetail : masterAuthorDetails) { + masterAuthorDetail.setParentId(maintainField.getId()).setId(DbUtils.getUUID()).insert(); + } + + if (fieldAuto) { + for (String s : createFieldList) { + new MasterAuthorDetail().setField(s).setVal(Constant.z_AllVal).setAll(true).setParentId(maintainField.getId()).setId(DbUtils.getUUID()).insert(); + } + } + } + // + + + //delete + for (SysField field : deleteList) { field.deleteById(); } //update - List<SysField> updateList = fieldList.stream().filter(sysField -> (Operate.update.equals(sysField.getOperate()))).collect(Collectors.toList()); for (SysField field : updateList) { field.setOperate(null).updateById(); } - List<SysField> createList = fieldList.stream().filter(sysField -> (Operate.create.equals(sysField.getOperate()))).collect(Collectors.toList()); - for (SysField field : createList) { + for (SysField field : createList) { String fieldType = field.getFieldType(); if (StringUtils.isEmpty(fieldType)) { fieldType = Constant.varchar; @@ -230,8 +272,15 @@ field.setOperate(null).updateById(); } + + + } } + + + + @Override public int getUnFlowCount(String tableName, String userId) { @@ -258,8 +307,25 @@ HashMap<String, List<Maintain>> resultMap = getMaintainFieldMapByTable(tableName); Set<String> keySet = resultMap.keySet(); + ArrayList<String> keys = new ArrayList<>(keySet); + Collections.sort(keys, new Comparator<String>() { + @Override + public int compare(String maintianFieldId1, String maintianFieldId2) { + MaintainField maintainField1 = selectById(maintianFieldId1); + MaintainField maintainField2 = selectById(maintianFieldId2); + if (maintainField1 == null) { + return 1; + } + if (maintainField2 == null){ + return -1; + } + + return maintainField1.getOrderNo().compareTo(maintainField2.getOrderNo()); + } + }); + JSONArray array = new JSONArray(); - for (String s : keySet) { + for (String s : keys) { List<Maintain> list = resultMap.get(s); Maintain max = list.stream().max(new Comparator<Maintain>() { @Override @@ -276,14 +342,30 @@ JSONObject object = new JSONObject(); object.fluentPut("maintainFieldId", s); object.fluentPut("version", MessageFormat.format(Constant.extent, min.getVersion(), max.getVersion())); + object.fluentPut("list", list); array.add(object); } return array; } + @Override + public List<Maintain> getMaintainListByMaintainField(String id, String tableName) { + MaintainField maintainField = selectById(id); + if (maintainField == null) { + if (!id.equalsIgnoreCase(Constant.Default)){ + return null; + }else { + maintainField = new MaintainField().setId(Constant.Default).setTableName(tableName); + } + + } + + return getMaintainByMaintainField(maintainField.getId(), maintainField.getTableName()); + } + private HashMap<String, List<Maintain>> getMaintainFieldMapByTable(String tableName) { - List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no")); + List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc")); HashMap<String, List<Maintain>> resultMap = new HashMap<>(); for (Maintain maintain : maintainList) { ActivitiStatus status = flowsService.getStatusByBusinessId(maintain.getId()); -- Gitblit v1.8.0