().eq("parent_id", form_struc.getId()));
+ if (child_struc == null){
+ throw new BadRequestException("当前表单配置异常:无子表配置信息");
}
+ JSONObject child_param = child_struc.getForm_param();
+ child_param.putAll(BASE_FORM);
+ for (String key : child_param.keySet()) {
+ dtl_items.add(MapOf.of("lable",child_param.get(key),"value",key));
+ }
+ result.put("dtl_item",dtl_items);
}
- result.put("item", items);
- return new ResponseEntity<>(result, HttpStatus.OK);
+ result.put("item",items);
+ return new ResponseEntity<>(result,HttpStatus.OK);
}
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
index 7510b742..34fe4f0e 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/controller/PmFormDataController.java
@@ -1,21 +1,22 @@
package org.nl.wms.pm_manage.form_data.controller;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
+import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
+import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
/**
*
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
index c2951367..0efcb0c3 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pm_manage/form_data/service/impl/PmFormDataServiceImpl.java
@@ -1,11 +1,12 @@
package org.nl.wms.pm_manage.form_data.service.impl;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
-import org.nl.common.utils.ListOf;
-import org.nl.common.utils.SpelUtil;
+import org.nl.common.utils.*;
import org.nl.wms.config_manage.form_struc.service.IBmFormStrucService;
import org.nl.wms.config_manage.form_struc.service.dao.BmFormStruc;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
@@ -20,8 +21,6 @@ import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.stream.Collectors;
/**
*
@@ -52,71 +51,91 @@ public class PmFormDataServiceImpl extends ServiceImpl().eq("form_type", form_type));
- BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", form_type));
- Assert.notNull(one,"当前单据类型未定义"+form_type);
- List saves = new ArrayList<>();
- //TODO: 查询同步配置表:获取表单的同步处理:SourceDataTypeHandler:分为字段映射跟class类处理,脚本处理
- PmFormData formData = new PmFormData();
- saves.add(formData);
- if (one.getHas_child()){
- BmFormStruc item = formStrucService.getOne(new QueryWrapper().eq("parent_id", one.getId()));
- String[] split = dataString.split(",");
- for (String itemData : split) {
-// PmFormData itemForm = SourceDataTypeHandlerMap.get(form_type).sourceHandler(itemData, syncFormMapping);
- PmFormData itemForm=new PmFormData();
- itemForm.setParent_id(formData.getId());
- saves.add(itemForm);
- }
+ if (StringUtils.isEmpty(form_type)||StringUtils.isEmpty(dataString)){
+ throw new BadRequestException("请求参数不能为空");
}
- this.saveBatch(saves);
- return saves.size();
+ SyncFormMapping syncFormMapping = iSyncFormMappingService.getOne(new QueryWrapper().eq("form_type", form_type));
+ if (syncFormMapping == null){
+ throw new BadRequestException("当前表单无同步配置信息");
+ }
+ List pmFormDatas = this.syncAnalyse(syncFormMapping, dataString);
+ this.saveBatch(pmFormDatas);
+ return pmFormDatas.size();
}
@Override
- public List syncAnalyse(SyncFormMapping formMapping, String dataString) {
+ public List syncAnalyse(SyncFormMapping formMapping, String sourceString) {
BmFormStruc one = formStrucService.getOne(new QueryWrapper().eq("form_type", formMapping.getForm_type()));
- //目标数据
- JSONObject dataJson = JSONObject.parseObject(dataString);
- if (StringUtils.isNotEmpty(one.getConvert_json())){
- dataJson = dataJson.getJSONObject(one.getConvert_json());
+ if (one==null){
+ throw new BadRequestException("当前表单无配置信息"+formMapping.getForm_type());
}
- Map itemMapping = formMapping.getMapping_json().stream().collect(HashMap::new, (formMap, o) -> {
+ List result = new ArrayList<>();
+ JSONObject sourceData = JSONObject.parseObject(sourceString);
+ if (StringUtils.isNotEmpty(one.getConvert_json())){
+ sourceData = sourceData.getJSONObject(one.getConvert_json());
+ }
+ JSONObject target = mappingParse(formMapping.getMapping_json(), one,sourceData );
+ Object items = target.remove("item");
+ target.put("id", IdUtil.getStringId());
+ target.put("code", CodeUtil.getNewCode(formMapping.getForm_type()));
+ target.put("create_time", DateUtil.now());
+ target.put("create_name", SecurityUtils.getCurrentNickName());
+ PmFormData mst = target.toJavaObject(PmFormData.class);
+ result.add(mst);
+ if (items!=null){
+ JSONArray items_arr = (JSONArray) items;
+ for (int i = 0; i < items_arr.size(); i++) {
+ JSONObject itemTarget = items_arr.getJSONObject(i);
+ itemTarget.put("id", IdUtil.getStringId());
+ itemTarget.put("code", CodeUtil.getNewCode(formMapping.getForm_type()));
+ itemTarget.put("create_time", DateUtil.now());
+ itemTarget.put("create_name", SecurityUtils.getCurrentNickName());
+ itemTarget.put("parent_id",mst.getId());
+ PmFormData dtl = itemTarget.toJavaObject(PmFormData.class);
+ result.add(dtl);
+ }
+ }
+ return result;
+ }
+
+ private JSONObject mappingParse(JSONArray mapping_json, BmFormStruc formStruc, JSONObject sourceData){
+
+ if (CollectionUtils.isEmpty(sourceData)){
+ throw new BadRequestException("当前业务数据为空");
+ }
+ //暂时只有两层
+ JSONArray mst_mapping_json = (JSONArray)mapping_json.remove(0);
+ Map fieldMapping = mst_mapping_json.stream().collect(HashMap::new, (formMap, o) -> {
JSONObject item = (JSONObject) o;
formMap.put(item.getString("value"), item);
}, HashMap::putAll);
//基础字段
- Set fields = ListOf.ofSet(one.getBiz_code()
- , one.getBiz_id()
- , one.getBiz_code()
- , one.getBiz_status()
- , one.getMaterial_id()
- , one.getPcsn()
- , one.getVehicle_code()
- , one.getUnit_id()
- , one.getQty());
- //查询目标表字段
- JSONObject returnObj = new JSONObject();
- //基础字段映射:如果只有一个就不迭代
- Map map = new HashMap<>();
- JSONObject targetData = mappingParse(fields, itemMapping, dataJson);
- //查询表单配置表,获取自定义json:自定义字段参数获取
- JSONObject form_param = one.getForm_param();
+ Set fields = ListOf.ofSet(formStruc.getBiz_code(), formStruc.getBiz_id(), formStruc.getBiz_code(), formStruc.getBiz_status(), formStruc.getMaterial_id(), formStruc.getPcsn(), formStruc.getVehicle_code(), formStruc.getUnit_id(), formStruc.getQty());
+ JSONObject data = fieldMapping(fields, fieldMapping, sourceData);
+
+ JSONObject form_param = formStruc.getForm_param();
if (form_param!=null){
- JSONObject form_data = mappingParse(form_param.keySet(), itemMapping, dataJson);
- targetData.put("form_data",form_data);
+ JSONObject form_data = fieldMapping(form_param.keySet(), fieldMapping, sourceData);
+ data.put("form_data",form_data);
}
- return null;
+ if (formStruc.getHas_child()){
+ BmFormStruc itemStruc = formStrucService.getOne(new QueryWrapper().eq("parent_id", formStruc.getId()));
+ JSONArray sourceDtls = sourceData.getJSONArray(itemStruc.getConvert_json());
+
+ JSONArray dtls = new JSONArray();
+ for (int i = 0; i < sourceDtls.size(); i++) {
+ dtls.add(this.mappingParse(mapping_json, itemStruc, sourceDtls.getJSONObject(i)));
+ }
+ data.put("item",dtls);
+ }
+ return data;
}
-
-
-
- private JSONObject mappingParse(Set fields,Map itemMapping,JSONObject sourceData){
+ private JSONObject fieldMapping(Set fields, Map fieldMapping, JSONObject sourceData){
Map SpelMap = new HashMap<>();
JSONObject data = new JSONObject();
for (String field : fields) {
if (StringUtils.isNotEmpty(field)){
- JSONObject itemMappingConfig = itemMapping.get(field);
+ JSONObject itemMappingConfig = fieldMapping.get(field);
if (itemMappingConfig == null){
throw new BadRequestException(String.format("当前表单没有配置字段:%s 映射", new String[]{field}));
}
@@ -126,12 +145,12 @@ public class PmFormDataServiceImpl extends ServiceImpl parse = SpelUtil.parse(sourceData, SpelMap);
- data.putAll(parse);
- }
}
}
+ if (!CollectionUtils.isEmpty(SpelMap)){
+ Map parse = SpelUtil.parse(sourceData, SpelMap);
+ data.putAll(parse);
+ }
return data;
}
}
diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java
index d1ce9d9a..e04517bb 100644
--- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java
+++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/sync_manage/controller/form_mapping/SyncFormMappingController.java
@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
+import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.FileUtil;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
+import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.sync_manage.service.field_mapping.dto.MappingQuery;
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
@@ -22,6 +24,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
+import java.util.List;
/**
*
@@ -44,9 +47,9 @@ public class SyncFormMappingController {
@Autowired
- ISyncFormMappingService iSyncFormMappingService;
+ private ISyncFormMappingService iSyncFormMappingService;
@Autowired
- IPmFormDataService formDataService;
+ private IPmFormDataService formDataService;
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
@@ -81,12 +84,16 @@ public class SyncFormMappingController {
return new ResponseEntity<>(HttpStatus.OK);
}
- @PostMapping("/syncData")
- public ResponseEntity