1、修改了应用程序设计分类改变发布后应用程序库中没变的问题。
修改文件:src/main/java/cn/tzsoft/roadflow/service/ProgramService.java

2、修改了多人不同步骤同时编辑表单时存在数据覆盖的问题。
修改文件:src/main/java/cn/tzsoft/roadflow/service/FlowDataService.java
增加方法:

/**
* 更新表单json数据,取原来数据json(rf_flow_data表中的json数据)来更新当前步骤状态不为编辑的字段。
*
* @param dataJson json数据
* @param groupId 组id
* @param stepFieldStatus 步骤上设置的字段状态
*/
public void updateStepDataJson(JsonNode dataJson, long groupId, List<FlowRunStepDataModel> stepFieldStatus) {
if (dataJson == null || stepFieldStatus == null || stepFieldStatus.size() == 0 || groupId < IdGenerator.MIN_VALUE) {
return;
}
long formId = JsonUtils.getLong(dataJson, "formId");
FlowDataModel flowDataModel = get(groupId, formId);
if (flowDataModel == null) {
return;
}
JsonNode dataJson1 = JsonUtils.getJsonNode(flowDataModel.getJsonData());
if (dataJson1.isEmpty()) {
return;
}
ObjectNode objectNode = (ObjectNode) dataJson;
for (Iterator<String> it = dataJson.fieldNames(); it.hasNext(); ) {
String key = it.next();
FlowRunStepDataModel status = stepFieldStatus.stream().filter(s -> s.getId().equals(key)).findFirst().orElse(null);
//如果不是编辑状态,则用原有数据替换。
if (status != null && status.getStatus() != 0) {
objectNode.set(key, JsonUtils.getJsonNode(dataJson1, key));
}
}
//子表
FormModel formModel = formService.get(JsonUtils.getLong(dataJson, "formCode"));
//bool isCustomForm = false;//是否是自定义表单
if (formModel == null) {
//自定义表单,从dataJson中的formAttrJson取表单设置。
formModel = new FormModel();
formModel.setAttrJson(JsonUtils.getString(dataJson, "formAttrJson"));
formModel.setSubtableJson(JsonUtils.getString(dataJson, "formSubtableJson"));
}
if (StringUtils.isBlank(formModel.getAttrJson())) {
return;
}
ArrayNode subtableJArray = JsonUtils.getArrayNode(formModel.getSubtableJson());
for (JsonNode subtableJ : subtableJArray) {
String subtableId = JsonUtils.getString(subtableJ, "id");
if (StringUtils.isBlank(subtableId)) {
subtableId = JsonUtils.getString(subtableJ, "table");
}
ArrayNode stubtableDataJson = JsonUtils.getArrayNode(dataJson, subtableId);
ArrayNode stubtableDataJson1 = JsonUtils.getArrayNode(dataJson1, subtableId);
//循环子表数据行
for (JsonNode subtableDataJ : stubtableDataJson) {
//循环子表数据列
ObjectNode subtableDataJObjectNode = (ObjectNode) subtableDataJ;
for (Iterator<String> it = subtableDataJ.fieldNames(); it.hasNext(); ) {
String subtableDataKey = it.next();
if (subtableDataKey.equals("key")) {
continue;
}
String finalSubtableId = subtableId;
FlowRunStepDataModel subStatus = stepFieldStatus.stream().filter(s -> s.getId().equals((finalSubtableId + "." + subtableDataKey).toLowerCase())).findFirst().orElse(null);
//如果不是编辑状态,则用原有数据替换。
if (subStatus != null && subStatus.getStatus() != 0) {
for (JsonNode subtableDataJ1 : stubtableDataJson1) {
if (JsonUtils.getString(subtableDataJ1, "key").equals(JsonUtils.getString(subtableDataJ, "key"))) {
subtableDataJObjectNode.set(subtableDataKey, JsonUtils.getJsonNode(subtableDataJ1, subtableDataKey));
}
}
}
}
}
}
}修改文件:src/main/java/cn/tzsoft/roadflow/service/FlowRunService.java

3、登录增加了验证码。
增加文件:src/main/java/cn/tzsoft/roadflow/service/VerifyCodeService.java
增加文件:src/main/java/cn/tzsoft/roadflow/common/VerifyCodeUtils.java
修改文件:src/main/java/cn/tzsoft/roadflow/controller/web/FilesController.java

修改文件:src/main/java/cn/tzsoft/roadflow/controller/webapi/HomeController.java



修改文件:src/web/element/src/roadui-pages/login.vue




|
联系QQ:493501010电话:136 0832 5512(微信同号)邮箱:road@roadflow.net
Copyright 2014 - 2025 重庆天知软件技术有限公司 版权所有
|