From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 27 五月 2020 09:59:29 +0800 Subject: [PATCH] merage --- src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java | 255 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 194 insertions(+), 61 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..97bbbc4 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java @@ -5,19 +5,14 @@ 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 com.highdatas.mdm.util.RedisClient; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -42,10 +37,22 @@ IFlowsService flowsService; @Autowired ISysFieldService fieldService; - @Autowired MaintainFieldMapper maintainFieldMapper; - + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + IMasterAuthorDetailService masterAuthorDetailService; + @Autowired + RedisClient redisClient; + /** + * + * @description: 鑾峰彇涓嬩竴鐗堟湰淇℃伅 + * @param tableName 琛ㄥ悕 + * @param userId 鐢ㄦ埛id + * @return: 瀛楁鐗堟湰瀵硅薄 + * + */ @Override public MaintainField getNextMaintain(String tableName, String userId) { MaintainField maintain = this.getMaxVersion(tableName); @@ -101,50 +108,43 @@ } return nowMaintain; } - + /** + * + * @description: 閫氳繃瀛楁鐗堟湰鑾峰彇瀵瑰簲鐨勬暟鎹増鏈琹ist + * @param tableName 琛ㄥ悕 + * @return 鏁版嵁鐗堟湰鍒楄〃 + * + */ @Override public List<Maintain> getMaintainByMaintainField(String maintainFieldId, String tableName) { HashMap<String, List<Maintain>> resultMap = getMaintainFieldMapByTable(tableName); if (resultMap == null) { return null; } + if (maintainFieldId == null) { + return null; + } + if (maintainFieldId.equalsIgnoreCase(Constant.All)) { + Collection<List<Maintain>> values = resultMap.values(); + HashSet<Maintain> maintains = new HashSet<>(); + for (List<Maintain> value : values) { + maintains.addAll(value); + } + + return new ArrayList<>(maintains); + } return resultMap.get(maintainFieldId); } - @Override - public boolean checkNowVersion(String maintainFieldId) { - MaintainField maintain = selectById(maintainFieldId); - MaintainField maxVersion = getNowVersion(maintain.getTableName()); - Integer compared = DbUtils.compareVersion(maxVersion, maintain); - if (compared != null && compared == 0) { - return true; - } else { - return false; - } - } - @Override - public boolean checkFirstVersion(String id) { - MaintainField maintain = selectById(id); - MaintainField order_no = selectOne(new EntityWrapper<MaintainField>().eq("table_name", maintain.getTableName()).orderBy("order_no")); - if (maintain.getId().equalsIgnoreCase(order_no.getId())) { - return true; - } - return false; - } - @Override - public boolean checkdMaxVersion(String maintainFieldId) { - MaintainField maintain = selectById(maintainFieldId); - MaintainField maxVersion = getMaxVersion(maintain.getTableName()); - Integer compared = DbUtils.compareVersion(maxVersion, maintain); - if (compared == 0) { - return true; - } else { - return false; - } - } - + /** + * + * @description: 鑾峰彇鏈�澶х殑瀛楁鐗堟湰 + * @param tableName 琛ㄥ悕 + * @return 瀛楁鐗堟湰瀵硅薄 + * + */ @Override public MaintainField getMaxVersion(String tableName) { Wrapper<MaintainField> versionWrapper = new EntityWrapper<MaintainField>().eq("table_name", tableName).orderBy("order_no desc"); @@ -152,7 +152,13 @@ MaintainField maxVersion = this.selectOne(versionWrapper); return maxVersion; } - + /** + * + * @description: 鑾峰彇鏈敓鏁堢殑鏈�澶х増鏈� + * @param tableName 琛ㄥ悕 + * @return 瀛楁鐗堟湰瀵硅薄 + * + */ @Override public MaintainField getUnFlowMaxVersion(String tableName) { Wrapper<MaintainField> versionWrapper = new EntityWrapper<MaintainField>().isNull("flow_id").eq("table_name", tableName).orderBy("order_no desc"); @@ -160,7 +166,13 @@ MaintainField maxVersion = selectOne(versionWrapper); return maxVersion; } - + /** + * + * @description: 鑾峰彇褰撳墠姝e湪鐢ㄧ殑瀛楁鐗堟湰瀵硅薄 + * @param tableName 琛ㄥ悕 + * @return 瀛楁鐗堟湰瀵硅薄 + * + */ @Override public MaintainField getNowVersion(String tableName) { Wrapper<MaintainField> versionWrapper = new EntityWrapper<MaintainField>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc"); @@ -179,12 +191,13 @@ return null; } - @Override - public MaintainField getMaintainFromVersion(String tableName, String verison) { - Wrapper<MaintainField> versionWrapper = new EntityWrapper<MaintainField>().eq("version", verison).eq("table_name", tableName); - MaintainField maxVersion = selectOne(versionWrapper); - return maxVersion; - } + /** + * + * @description: 娴佺▼瀹屾垚鍚庣殑澶勭悊 + * @param maintainId 瀛楁鐗堟湰 + * @param status 娴佺▼鐘舵�� + * + */ @Override public void dealFlow(String maintainId, ActivitiStatus status) { @@ -195,20 +208,73 @@ maintainField.deleteById(); } else if (status.equals(ActivitiStatus.open)) { + + Integer orderNo = maintainField.getOrderNo(); + int preNo = orderNo - 1; + MaintainField preMaintainField; + if (preNo < 0 ) { + preMaintainField = new MaintainField().setId(Constant.Default); + }else { + 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())); + 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(); + + List<MasterAuthorDetail> masterAuthorDetails = masterAuthorDetailService.selectList(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId())); + + masterAuthor.setMaintainFieldId(maintainField.getId()) + .setCreateTime(new Date()) + .setUpdateTime(null) + .setId(DbUtils.getUUID()) + .insert(); + + for (MasterAuthorDetail masterAuthorDetail : masterAuthorDetails) { + long count = deleteList.stream().filter(sysField -> sysField.getField().equalsIgnoreCase(masterAuthorDetail.getField())).count(); + if (count > 0) { + continue; + } + masterAuthorDetail.setParentId(masterAuthor.getId()).setId(DbUtils.getUUID()).insert(); + } + + if (fieldAuto) { + for (String s : createFieldList) { + new MasterAuthorDetail().setField(s).setVal(Constant.z_AllVal).setAll(true).setParentId(masterAuthor.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; @@ -229,10 +295,25 @@ maintainFieldMapper.addCloumn(tableName, field.getField(), fieldTypeStr); field.setOperate(null).updateById(); + + redisClient.delByField(); } + + + } } + + + + /** + * + * @description: 鑾峰彇鏈敓鏁堢殑鐗堟湰鏁伴噺 + * @param tableName 琛ㄥ悕 + * @return 鏈敓鏁堢増鏈暟閲� + * + */ @Override public int getUnFlowCount(String tableName, String userId) { List<MaintainField> maintainFields = selectList(new EntityWrapper<MaintainField>().eq("table_name", tableName)); @@ -252,14 +333,37 @@ } return cnt; } - + /** + * + * @description: 閫氳繃琛ㄥ悕鑾峰彇瀛楁鐗堟湰锛屾暟鎹増鏈殑map list + * @param tableName 琛ㄥ悕 + * @return 瀛楁鐗堟湰锛屾暟鎹増鏈殑map list + * + */ @Override public JSONArray getMaintainListByTable(String tableName) { 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,18 +380,47 @@ 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; } + /** + * + * @description: 閫氳繃琛ㄥ悕鍜屽瓧娈电増鏈幏鍙栨暟鎹増鏈琹ist + * @param tableName 琛ㄥ悕 + * @param id 瀛楁鐗堟湰id + * @return 鏁版嵁鐗堟湰list + * + */ + @Override + public List<Maintain> getMaintainListByMaintainField(String id, String tableName) { + MaintainField maintainField = selectById(id); + if (maintainField == null) { + if (!id.equalsIgnoreCase(Constant.Default) && !id.equalsIgnoreCase(Constant.All)){ + return null; + }else { + maintainField = new MaintainField().setId(id).setTableName(tableName); + } + } + + return getMaintainByMaintainField(maintainField.getId(), maintainField.getTableName()); + } + /** + * + * @description: 閫氳繃琛ㄥ悕鑾峰彇瀛楁鐗堟湰锛屾暟鎹増鏈殑map list + * @param tableName 琛ㄥ悕 + * @return 瀛楁鐗堟湰锛屾暟鎹増鏈殑map list + * + */ 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()); - if (!status.equals(ActivitiStatus.open)) { + if (!ActivitiStatus.open.equals(status)) { continue; } MaintainField maintainFieldByMaintain = fieldService.getMaintainFieldByMaintain(maintain.getId()); -- Gitblit v1.8.0