|
@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
|
|
|
/**
|
|
|
*
|
|
@@ -39,12 +40,13 @@ public class FormDataLogService extends ServiceImpl<FormDataLogMapper, FormDataL
|
|
|
* 保存表单数据变化
|
|
|
*
|
|
|
* @param formId
|
|
|
+ * @param dataId
|
|
|
* @param oldMap
|
|
|
* @param newMap
|
|
|
* @return
|
|
|
*/
|
|
|
- public boolean saveLog(String formId, Map<String, Object> oldMap, Map<String, Object> newMap) {
|
|
|
- List<FormDataLog> diffList = diff(formId, oldMap, newMap);
|
|
|
+ public boolean saveLog(String formId, String dataId, Map<String, Object> oldMap, Map<String, Object> newMap) {
|
|
|
+ List<FormDataLog> diffList = diff(formId, dataId, oldMap, newMap);
|
|
|
if (CollUtil.isNotEmpty(diffList)) {
|
|
|
return saveBatch(diffList);
|
|
|
}
|
|
@@ -55,11 +57,13 @@ public class FormDataLogService extends ServiceImpl<FormDataLogMapper, FormDataL
|
|
|
* 找出两次表单提交的不同
|
|
|
*
|
|
|
* @param formId
|
|
|
+ * @param dataId
|
|
|
* @param oldMap
|
|
|
* @param newMap
|
|
|
* @return
|
|
|
*/
|
|
|
- private List<FormDataLog> diff(String formId, Map<String, Object> oldMap, Map<String, Object> newMap) {
|
|
|
+ private List<FormDataLog> diff(String formId, String dataId, Map<String, Object> oldMap,
|
|
|
+ Map<String, Object> newMap) {
|
|
|
if (oldMap == null) {
|
|
|
oldMap = new HashMap<>();
|
|
|
}
|
|
@@ -93,38 +97,60 @@ public class FormDataLogService extends ServiceImpl<FormDataLogMapper, FormDataL
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- FormDataLog log = null;
|
|
|
+ FormDataLog dataLog = null;
|
|
|
CubeTableColumnModel columnData = dataSourceService.getFieldInfo(Integer.decode(columnId));
|
|
|
- if (oldValue == null && newValue != null) {
|
|
|
+ if (isEmptyObject(oldValue) && !isEmptyObject(newValue)) {
|
|
|
// 新增
|
|
|
- log = new FormDataLog(FormDataLogType.add, Integer.decode(columnId), formId);
|
|
|
- log.setValueNew(handleValue(newValue, columnData));
|
|
|
- }
|
|
|
-
|
|
|
- if (oldValue != null && newValue != null && oldValue != newValue) {
|
|
|
+ dataLog = new FormDataLog(FormDataLogType.add, Integer.decode(columnId), formId);
|
|
|
+ dataLog.setValueNew(handleValue(newValue, columnData));
|
|
|
+ inserLog(logList, dataLog, sn, dataId);
|
|
|
+ } else if (!isEmptyObject(oldValue) && !isEmptyObject(newValue) && !isEqualObject(oldValue, newValue)) {
|
|
|
// 更新
|
|
|
- log = new FormDataLog(FormDataLogType.update, Integer.decode(columnId), formId);
|
|
|
- log.setValueOld(handleValue(oldValue, columnData));
|
|
|
- log.setValueNew(handleValue(newValue, columnData));
|
|
|
- }
|
|
|
-
|
|
|
- if (oldValue != null && newValue == null) {
|
|
|
+ dataLog = new FormDataLog(FormDataLogType.update, Integer.decode(columnId), formId);
|
|
|
+ dataLog.setValueOld(handleValue(oldValue, columnData));
|
|
|
+ dataLog.setValueNew(handleValue(newValue, columnData));
|
|
|
+ inserLog(logList, dataLog, sn, dataId);
|
|
|
+ } else if (!isEmptyObject(oldValue) && isEmptyObject(newValue)) {
|
|
|
// 删除
|
|
|
- log = new FormDataLog(FormDataLogType.remove, Integer.decode(columnId), formId);
|
|
|
- log.setValueOld(handleValue(oldValue, columnData));
|
|
|
+ dataLog = new FormDataLog(FormDataLogType.remove, Integer.decode(columnId), formId);
|
|
|
+ dataLog.setValueOld(handleValue(oldValue, columnData));
|
|
|
+ inserLog(logList, dataLog, sn, dataId);
|
|
|
}
|
|
|
|
|
|
- // 同一批次的数据变更,时间和批号都相同
|
|
|
- log.setTime(new Date());
|
|
|
- log.setSn(sn);
|
|
|
- log.setOperator(SecureUtil.getNickName());
|
|
|
- log.setOperatorId(SecureUtil.getUserId());
|
|
|
- logList.add(log);
|
|
|
}
|
|
|
|
|
|
return logList;
|
|
|
}
|
|
|
|
|
|
+ private void inserLog(List<FormDataLog> logList, FormDataLog dataLog, long sn, String dataId) {
|
|
|
+ // 同一批次的数据变更,时间和批号都相同
|
|
|
+ dataLog.setDataId(dataId);
|
|
|
+ dataLog.setTime(new Date());
|
|
|
+ dataLog.setSn(sn);
|
|
|
+ dataLog.setOperator(SecureUtil.getNickName());
|
|
|
+ dataLog.setOperatorId(SecureUtil.getUserId());
|
|
|
+ logList.add(dataLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isEmptyObject(Object obj) {
|
|
|
+ if (obj == null) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ String value = obj.toString();
|
|
|
+ if (StrUtil.isBlankIfStr(value)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isEqualObject(Object obj1, Object obj2) {
|
|
|
+ String value1 = obj1.toString();
|
|
|
+ String value2 = obj2.toString();
|
|
|
+ return value1.equalsIgnoreCase(value2);
|
|
|
+ }
|
|
|
+
|
|
|
private String handleValue(Object object, CubeTableColumnModel field) {
|
|
|
if (object != null) {
|
|
|
String value = null;
|