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/MaintainServiceImpl.java | 425 ++++++++++++++++++++++++++++++++++------------------ 1 files changed, 277 insertions(+), 148 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java index f7c8f61..4a6ddd4 100644 --- a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java +++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java @@ -2,13 +2,11 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.generator.config.querys.AbstractDbQuery; 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.MaintainDetail; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.mapper.MaintainDetailMapper; import com.highdatas.mdm.mapper.MaintainMapper; import com.highdatas.mdm.mapper.TableInfoMapper; import com.highdatas.mdm.pojo.*; @@ -20,15 +18,12 @@ import org.springframework.stereotype.Service; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** * <p> - * 鏈嶅姟瀹炵幇绫� + * 鏈嶅姟瀹炵幇绫� * </p> * * @author kimi @@ -45,29 +40,65 @@ MasterDataService masterDataService; @Autowired ISysFieldService fieldService; + @Autowired MaintainMapper maintainMapper; @Autowired IFlowsService flowsService; + @Autowired + MaintainDetailMapper maintainDetailMapper; + @Autowired + IMaintainFieldService maintainFieldService; @Override - public HashMap<Operate, Object> compare(String maintainId, String maintainId2) { + public JSONObject compare(String maintainId, String maintainId2, Operate operate, int pageNo, int pageSize) { Maintain baseMaintain = selectById(maintainId); Maintain compareMaintain = selectById(maintainId2); HashMap<Operate, Object> operateIntegerMap = new HashMap<Operate, Object>(); - + List<Map<String, Object>> maps; + Page page; + List<SysField> fieldByMaintain; if (DbUtils.compareVersion(baseMaintain, compareMaintain) > 0) { - addCompareInfo(baseMaintain, compareMaintain, operateIntegerMap); - operateIntegerMap.put(Operate.common, MessageFormat.format("{0} 瀵规瘮 {1}", baseMaintain.getVersion(), compareMaintain.getVersion())); - }else { - addCompareInfo(compareMaintain, baseMaintain, operateIntegerMap); - operateIntegerMap.put(Operate.common, MessageFormat.format("{0} 瀵规瘮 {1}", compareMaintain.getVersion(), baseMaintain.getVersion())); + String maintainTableName = baseMaintain.getTableName(); + String tempName = baseMaintain.getTableName() + Constant.RECORD; + fieldByMaintain = fieldService.getFieldByMaintain(baseMaintain.getId()); + String collect = fieldByMaintain.stream().map(sysField -> sysField.getField()).collect(Collectors.joining(Constant.COMMA)); + maps = maintainDetailMapper.selectOperateDatas("count(*) as cnt", tempName, operate.name(), maintainTableName, compareMaintain.getOrderNo(), baseMaintain.getOrderNo(), null, null); + Object cnt = maps.get(0).get("cnt"); + page = new Page(Integer.valueOf(cnt.toString())); + page.setPageNo(pageNo); + page.setPageSize(pageSize); + maps = maintainDetailMapper.selectOperateDatas(collect, tempName, operate.name(), maintainTableName, compareMaintain.getOrderNo(), baseMaintain.getOrderNo(), "desc", page.getLimitSQL()); + + } else { + if (operate.equals(Operate.create)) { + operate = Operate.delete; + } else if (operate.equals(Operate.delete)) { + operate = Operate.create; + } + String maintainTableName = compareMaintain.getTableName(); + String tempName = compareMaintain.getTableName() + Constant.RECORD; + fieldByMaintain = fieldService.getFieldByMaintain(compareMaintain.getId()); + String collect = fieldByMaintain.stream().map(sysField -> sysField.getField()).collect(Collectors.joining(Constant.COMMA)); + maps = maintainDetailMapper.selectOperateDatas("count(*) as cnt", tempName, operate.name(), maintainTableName, baseMaintain.getOrderNo(), compareMaintain.getOrderNo(), null, null); + Object cnt = maps.get(0).get("cnt"); + page = new Page(Integer.valueOf(cnt.toString())); + page.setPageNo(pageNo); + page.setPageSize(pageSize); + maps = maintainDetailMapper.selectOperateDatas(collect, tempName, operate.name(), maintainTableName, baseMaintain.getOrderNo(), compareMaintain.getOrderNo(), null, page.getLimitSQL()); } - return operateIntegerMap; + JSONObject object = new JSONObject(); + object.fluentPut("total", page.getRecordCount()); + object.fluentPut("size", page.getPageSize()); + object.fluentPut("pages", page.getPageCount()); + object.fluentPut("current", page.getPageNo()); + object.fluentPut("records", maps); + object.fluentPut("fields", fieldByMaintain); + return object; } private void addCompareInfo(Maintain baseMaintain, Maintain compareMaintain, HashMap<Operate, Object> operateIntegerMap) { @@ -91,63 +122,73 @@ @Override public void dealFlow(String maintainId, ActivitiStatus status) { - Maintain maintain = selectById(maintainId); - String tableName = maintain.getTableName(); - List<MaintainDetail> maintainDetailList = maintainDetailService.selectList(new EntityWrapper<MaintainDetail>().eq("parent_id", maintainId)); - if (status.equals(ActivitiStatus.close)) { - String collect = maintainDetailList.stream().map(detail -> DbUtils.quotedStr(detail.getPreMergeId())).collect(Collectors.joining(Constant.COMMA)); - //delete temp - masterDataService.delete(tableName + Constant.RECORD, "id in (" +collect+ ")"); - //delete detail - for (MaintainDetail maintainDetail : maintainDetailList) { - maintainDetail.deleteById(); + try { + Maintain maintain = selectById(maintainId); + String tableName = maintain.getTableName(); + List<MaintainDetail> maintainDetailList = maintainDetailService.selectList(new EntityWrapper<MaintainDetail>().eq("parent_id", maintainId)); + if (status.equals(ActivitiStatus.close)) { + String collect = maintainDetailList.stream().map(detail -> DbUtils.quotedStr(detail.getPreMergeId())).collect(Collectors.joining(Constant.COMMA)); + //delete temp + if (!StringUtils.isEmpty(collect)) { + masterDataService.delete(tableName + Constant.RECORD, "id in (" + collect + ")"); + } + + //delete detail + for (MaintainDetail maintainDetail : maintainDetailList) { + maintainDetail.deleteById(); + } + //delete maintain + maintain.deleteById(); + return; } - //delete maintain - maintain.deleteById(); - return; + String fields = masterDataService.getTempFields(null, tableName); + String tempFields = masterDataService.getFields(tableName + Constant.RECORD); + + String tableTempName = tableName + Constant.RECORD; + // insert 2 std + tableInfoMapper.tempCreate2std(tableName, fields, tableTempName, DbUtils.quotedStr(maintainId)); + + + // update + List<Map<String, Object>> updeateDatas = tableInfoMapper.tempByOperate(DbUtils.quotedStr(Operate.update.name()), tempFields, tableTempName, DbUtils.quotedStr(maintainId)); + for (Map<String, Object> updeateData : updeateDatas) { + String stdId = updeateData.get(Constant.STD_ID).toString(); + String id = updeateData.get(Constant.ID).toString(); + Result result = masterDataService.selectById(tableName, stdId); + Object tempData = result.getData(); + String datas = JSON.toJSONString(tempData); + JSONObject object = JSON.parseObject(datas); + Object grid = object.get("grid"); + object = JSON.parseObject(JSON.toJSONString(grid)); + + object.put(Constant.STD_ID, stdId); + object.put(Constant.ID, id); + + datas = JSON.toJSONString(object); + + masterDataService.updateById(tableTempName, datas, id, true); + + updeateData.put(Constant.STD_ID, null); + updeateData.put(Constant.ID, stdId); + + masterDataService.updateById(tableName, JSON.toJSONString(updeateData), stdId, true); + } + //delete + List<Map<String, Object>> delDatas = tableInfoMapper.tempByOperate(DbUtils.quotedStr(Operate.delete.name()), tempFields, tableTempName, DbUtils.quotedStr(maintainId)); + for (Map<String, Object> delData : delDatas) { + Object id = delData.get(Constant.STD_ID); + masterDataService.deleteById(tableName, id.toString()); + } + // update deal + tableInfoMapper.tempDeal(tableTempName, DbUtils.quotedStr(maintainId)); } - String fields = masterDataService.getTempFields(tableName); - String tempFields = masterDataService.getFields(tableName + Constant.RECORD); - - String tableTempName = tableName + Constant.RECORD; - // insert 2 std - tableInfoMapper.tempCreate2std(tableName, fields, tableTempName, DbUtils.quotedStr(maintainId)); - - - // update - List<Map<String, Object>> updeateDatas = tableInfoMapper.tempByOperate(DbUtils.quotedStr(Operate.update.name()), tempFields, tableTempName, DbUtils.quotedStr(maintainId)); - for (Map<String, Object> updeateData : updeateDatas) { - String stdId = updeateData.get(Constant.STD_ID).toString(); - String id = updeateData.get(Constant.ID).toString(); - Result result = masterDataService.selectById(tableName, stdId); - Object tempData = result.getData(); - String datas = JSON.toJSONString(tempData); - JSONObject object = JSON.parseObject(datas); - Object grid = object.get("grid"); - object = JSON.parseObject(JSON.toJSONString(grid)); - - object.put(Constant.STD_ID, stdId); - object.put(Constant.ID, id); - - datas = JSON.toJSONString(object); - - masterDataService.updateById(tableTempName,datas, id,true); - - updeateData.put(Constant.STD_ID, null); - updeateData.put(Constant.ID, stdId); - - masterDataService.updateById(tableName,JSON.toJSONString(updeateData), stdId,true); + catch (Exception e ){ + e.printStackTrace(); } - //delete - List<Map<String, Object>> delDatas = tableInfoMapper.tempByOperate(DbUtils.quotedStr(Operate.delete.name()), tempFields, tableTempName, DbUtils.quotedStr(maintainId)); - for (Map<String, Object> delData : delDatas) { - Object id = delData.get(Constant.STD_ID); - masterDataService.deleteById(tableName, id.toString()); - } - // update deal - tableInfoMapper.tempDeal(tableTempName, DbUtils.quotedStr(maintainId)); + } + @Override public boolean checkNowVersion(String maintainId) { Maintain maintain = selectById(maintainId); @@ -171,8 +212,20 @@ } @Override - public Result getUnSubmitData(String tableName, Integer pageNo, String pageSize, String whereSegment) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("version desc"); + public Long getUnSubmitDataCnt(TUser user, String tableName, String whereSegment) { + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("order_no desc"); + Maintain maintain = selectOne(versionWrapper); + if (maintain == null) { + return null; + } + String maintainId = maintain.getId(); + String tempName = tableName + Constant.RECORD; + Long aLong = maintainMapper.countUnSubmitData(tempName, whereSegment, DbUtils.quotedStr(maintainId)); + return aLong; + } + @Override + public Result getUnSubmitData(TUser user, String tableName, Integer pageNo, String pageSize, String whereSegment) { + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("order_no desc"); Maintain maintain = selectOne(versionWrapper); if (maintain == null) { return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); @@ -185,7 +238,7 @@ if (!StringUtils.isEmpty(pageSize)) { page.setPageSize(Integer.valueOf(pageSize)); } - String tempFields = masterDataService.getTempFields(tableName); + String tempFields = masterDataService.getTempFields(user, tableName); List<Map<String, Object>> maps = maintainMapper.selectUnSubmitData(tempName, tempFields, whereSegment, DbUtils.quotedStr(maintainId), page.getLimitSQL()); JSONObject object = new JSONObject(); object.fluentPut("records", maps); @@ -195,6 +248,97 @@ object.fluentPut("pages", page.getPageCount()); object.fluentPut("current", page.getPageNo()); return Result.success(object); + } + + @Override + public Maintain getNextMaintain(String tableName, String userId) { + Maintain maintain = this.getMaxVersion(tableName); + Maintain unFlowMaxVersion = this.getUnFlowMaxVersion(tableName); + if (unFlowMaxVersion == null) { + unFlowMaxVersion = new Maintain(); + if (maintain != null) { + unFlowMaxVersion.setVersion(DbUtils.versionAddSub(maintain.getVersion())); + int orderNo = maintain.getOrderNo(); + orderNo++; + unFlowMaxVersion.setOrderNo(orderNo); + } else { + unFlowMaxVersion.setVersion(Constant.VERSION_Default); + unFlowMaxVersion.setOrderNo(0); + } + + unFlowMaxVersion.setId(DbUtils.getUUID()); + unFlowMaxVersion.setChargeId(userId); + unFlowMaxVersion.setCreateTime(new Date()); + unFlowMaxVersion.setTableName(tableName); + } + + Maintain nowMaintain = unFlowMaxVersion; + if (DbUtils.compareVersion(maintain, unFlowMaxVersion) != 0) { + nowMaintain = new Maintain(); + String maintanId = DbUtils.getUUID(); + nowMaintain.setId(maintanId); + nowMaintain.setCreateTime(new Date()); + int orderNo = maintain.getOrderNo(); + orderNo++; + nowMaintain.setVersion(DbUtils.versionAddSub(maintain.getVersion())); + nowMaintain.setOrderNo(orderNo); + nowMaintain.setTableName(tableName); + } + + nowMaintain.setChargeId(userId); + String maintainId = nowMaintain.getId(); + if (StringUtils.isEmpty(maintainId)) { + nowMaintain.setId(DbUtils.getUUID()); + } + return nowMaintain; + } + + @Override + public JSONObject compareField(String maintainId1, String maintainId2) { + Maintain baseMaintain = selectById(maintainId1); + Maintain compareMaintain = selectById(maintainId2); + boolean pre = false; + if (DbUtils.compareVersion(baseMaintain, compareMaintain) > 0) { + pre = true; + } + + List<SysField> baseFieldList = fieldService.getFieldByMaintain(maintainId1); + List<SysField> compareFieldList = fieldService.getFieldByMaintain(maintainId2); + List<String> baseFieldStrList = baseFieldList.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + List<String> compareFieldStrList = compareFieldList.stream().map(sysField -> sysField.getField()).collect(Collectors.toList()); + + List<String> baseExportList = baseFieldStrList.stream().filter(s -> !compareFieldStrList.contains(s)).collect(Collectors.toList()); + List<SysField> baseExprotFieldList = baseFieldList.stream().filter(sysField -> baseExportList.contains(sysField.getField())).collect(Collectors.toList()); + List<String> compareExportList = compareFieldStrList.stream().filter(s -> !baseFieldStrList.contains(s)).collect(Collectors.toList()); + List<SysField> compareExprotFieldList = compareFieldList.stream().filter(sysField -> compareExportList.contains(sysField.getField())).collect(Collectors.toList()); + + List<String> collect = baseFieldStrList.stream().filter(s -> compareFieldList.contains(s)).collect(Collectors.toList()); + List<SysField> changedList = new ArrayList<>(); + for (String s : collect) { + List<SysField> baseCol = baseFieldList.stream().filter(sysField -> sysField.getField().equalsIgnoreCase(s)).collect(Collectors.toList()); + List<SysField> compareCol = compareFieldList.stream().filter(sysField -> sysField.getField().equalsIgnoreCase(s)).collect(Collectors.toList()); + SysField baseField = baseCol.get(0); + SysField sysField = compareCol.get(0); + if (!baseField.equals(sysField)) { + if (pre) { + //base 澶� + changedList.add(baseField); + } else { + changedList.add(sysField); + } + } + } + JSONObject object = new JSONObject(); + if (pre) { + object.fluentPut("create", baseExprotFieldList); + object.fluentPut("delete", compareExprotFieldList); + object.fluentPut("update", changedList); + } else { + object.fluentPut("create", compareExprotFieldList); + object.fluentPut("delete", baseExprotFieldList); + object.fluentPut("update", changedList); + } + return object; } @Override @@ -211,7 +355,7 @@ @Override public Maintain getMaxVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc"); Maintain maxVersion = selectOne(versionWrapper); return maxVersion; @@ -219,7 +363,7 @@ @Override public Maintain getUnFlowMaxVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().isNull("flow_id").eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().isNull("flow_id").eq("table_name", tableName).orderBy("order_no desc"); Maintain maxVersion = selectOne(versionWrapper); return maxVersion; @@ -228,7 +372,7 @@ @Override public Maintain getInvalidMaxVersion(String tableName) { Maintain result = null; - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc"); List<Maintain> maintainList = selectList(versionWrapper); @@ -251,13 +395,24 @@ } @Override - public Result getInvalidVerionData(String tableName, String where, Integer pageNo, Integer pageSize) { + public Long getInvalidVerionDataCnt(TUser user, String tableName, String where) { + Maintain invalidVersion = getInvalidMaxVersion(tableName); + if (invalidVersion == null) { + return null; + } + String tableTempName = tableName + Constant.RECORD; + String tempFields = masterDataService.getTempFields(user, tableName); + Long count = maintainMapper.countInvalidVersionData(tableTempName, where, invalidVersion.getOrderNo()); + return count; + } + @Override + public Result getInvalidVerionData(TUser user, String tableName, String where, Integer pageNo, Integer pageSize) { Maintain invalidVersion = getInvalidMaxVersion(tableName); if (invalidVersion == null) { return Result.success(null); } String tableTempName = tableName + Constant.RECORD; - String tempFields = masterDataService.getTempFields(tableName); + String tempFields = masterDataService.getTempFields(user, tableName); Long count = maintainMapper.countInvalidVersionData(tableTempName, where, invalidVersion.getOrderNo()); Page page = new Page(count); page.setPageNo(pageNo); @@ -278,12 +433,12 @@ @Override public Maintain getNowVersion(String tableName) { - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("version desc"); + Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc"); List<Maintain> maintains = selectList(versionWrapper); for (Maintain maintain : maintains) { Flows flows = flowsService.selectById(maintain.getFlowId()); - if (flows == null){ + if (flows == null) { continue; } ActivitiStatus status = flows.getStatus(); @@ -295,30 +450,6 @@ //return selectOne(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc")); } - @Override - public Maintain getRecentHistoryVersion(String tableName) { - Maintain nowMaintain = null; - Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("version desc"); - List<Maintain> maintains = selectList(versionWrapper); - for (Maintain maintain : maintains) { - Flows flows = flowsService.selectById(maintain.getFlowId()); - if (flows == null){ - continue; - } - ActivitiStatus status = flows.getStatus(); - if (status.equals(ActivitiStatus.open)) { - nowMaintain = maintain; - break; - } - } - if (nowMaintain == null) { - nowMaintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc")); - } - int orderNo = nowMaintain.getOrderNo(); - orderNo--; - Maintain maintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", nowMaintain.getTableName()).eq("order_no", orderNo)); - return maintain; - } @Override public Maintain getMaintainFromVersion(String tableName, String verison) { @@ -327,78 +458,41 @@ return maxVersion; } - @Override - public List<Map<String, Object>> selectVersionOperator(String tableTempName, String maintaInId, String where) { - return maintainMapper.selectVersionOperator(tableTempName, where, maintaInId); - } - - @Override - public List<Map<String, Object>> selectVersionOperator(String tableTempName, String maintaInId) { - return maintainMapper.selectVersionOperator(tableTempName, Constant.WHERE_DEFAULT, maintaInId); - } - - @Override - public List<Map<String, Object>> selectVersionOperatorByType(String tableTempName, String maintaInId, Operate operate, String where) { - return maintainMapper.selectVersionOperatorByType(tableTempName, where, maintaInId, operate.name()); - } @Override public List<Map<String, Object>> selectVersionOperatorByType(String tableTempName, String maintaInId, Operate operate) { - return maintainMapper.selectVersionOperatorByType(tableTempName, Constant.WHERE_DEFAULT, maintaInId, operate.name()); - } - - @Override - public long countVersionOperator(String tableTempName, String maintaInId, String whereSegment) { - return maintainMapper.countVersionOperator(tableTempName, maintaInId, whereSegment); - } - - @Override - public long countVersionOperator(String tableTempName, String maintaInId) { - return maintainMapper.countVersionOperator(tableTempName, maintaInId, Constant.WHERE_DEFAULT); + return maintainMapper.selectVersionOperatorByType(tableTempName, Constant.WHERE_DEFAULT, maintaInId, operate.name()); } @Override public long countVersionOperatorByType(String tableTempName, String filterSegment, String maintaInId, Operate operate) { - return maintainMapper.countVersionOperatorByType(tableTempName,filterSegment, maintaInId,operate.name()); + return maintainMapper.countVersionOperatorByType(tableTempName, filterSegment, maintaInId, operate.name()); } - @Override - public List<Map<String, Object>> selectVersionOperatorByPage(String tableTempName, String maintaInId, String limit, String where) { - return maintainMapper.selectVersionOperatorByPage(tableTempName, maintaInId, limit, where); - } - - @Override - public List<Map<String, Object>> selectVersionOperatorByPage(String tableTempName, String maintaInId, String limit) { - return maintainMapper.selectVersionOperatorByPage(tableTempName, Constant.WHERE_DEFAULT, maintaInId, limit); - } @Override public List<Map<String, Object>> selectVersionOperatorByTypeByPage(String tableTempName, String maintaInId, Operate operate, String limit) { return maintainMapper.selectVersionOperatorByTypeByPage(tableTempName, Constant.WHERE_DEFAULT, maintaInId, operate.name(), limit); } - @Override - public List<Map<String, Object>> selectVersionOperatorByTypeByPage(String tableTempName, String maintaInId, Operate operate, String limit, String where) { - return maintainMapper.selectVersionOperatorByTypeByPage(tableTempName, where, maintaInId, operate.name(), limit); - } @Override public List<String> getCompareVersionMaintains(Maintain unFlowMaxVersion, Maintain maintainFromVersion) { Integer compare = DbUtils.compareVersion(unFlowMaxVersion, maintainFromVersion); ArrayList<String> ids = new ArrayList<>(); if (compare > 0) { - getVerionMatintains(unFlowMaxVersion,maintainFromVersion, ids); - }else if(compare == 0) { + getVerionMatintains(unFlowMaxVersion, maintainFromVersion, ids); + } else if (compare == 0) { ids.add(unFlowMaxVersion.getId()); - }else { - getVerionMatintains(maintainFromVersion,unFlowMaxVersion, ids); + } else { + getVerionMatintains(maintainFromVersion, unFlowMaxVersion, ids); } return ids; } @Override - public Result tempDataByVersionByFlow(String flowId, String whereSegment, Integer pageNo, Integer pageSize) { + public Result tempDataByVersionByFlow(TUser user, String flowId, String whereSegment, Integer pageNo, Integer pageSize) { Flows flows = flowsService.selectById(flowId); if (flows == null) { return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); @@ -408,7 +502,7 @@ if (maintain == null) { return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); } - String fields = masterDataService.getTempFields(maintain.getTableName()); + String fields = masterDataService.getTempFields(user, maintain.getTableName()); String tableTempName = maintain.getTableName() + Constant.RECORD; long total = maintainMapper.countTempDataByVersionByFlow(tableTempName, flowId, whereSegment); @@ -435,6 +529,41 @@ return Result.success(object); } + @Override + public Map<String, Object> getPreInfo(Maintain maintain, String id) { + String maintainTableName = maintain.getTableName(); + String recordTableName = maintainTableName + Constant.RECORD; + List<Map<String, Object>> maps = maintainDetailMapper.seleMaintainDetailByDataId(recordTableName, maintain.getId(), id); + + if (maps == null) { + return null; + } + if (maps == null || maps.isEmpty()) { + return null; + } + Map<String, Object> stringObjectMap = maps.get(0); + String createTime = stringObjectMap.get("createTime").toString(); + List<SysField> fieldByMaintain = fieldService.getFieldByMaintain(maintain.getId()); + String fields = fieldByMaintain.stream().map(sysField -> sysField.getField()) + .map(s -> s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format("{0} as id", Constant.STD_ID) : s) + .collect(Collectors.joining(Constant.COMMA)); + + List<Map<String, Object>> preData = maintainDetailMapper.getPreData(fields, recordTableName, id, createTime); + if (preData == null || preData.isEmpty()) { + return null; + } + Map<String, Object> result = preData.get(0); + String maintainId = result.get("maintainId").toString(); + Maintain preMaintain = selectById(maintainId); + if (preMaintain != null) { + String chargeId = preMaintain.getChargeId(); + TUser userById = DbUtils.getUserById(chargeId); + if (userById != null) { + result.put("userName", userById.getUserName()); + } + } + return result; + } private void getVerionMatintains(Maintain firstVersion, Maintain secondVersion, List<String> ids) { -- Gitblit v1.8.0