|
|
@@ -149,6 +149,10 @@ public class ExcelServiceImpl implements ExcelService{
|
|
|
StringBuilder err = new StringBuilder();
|
|
|
JSONArray mains = new JSONArray();
|
|
|
JSONArray details = new JSONArray();
|
|
|
+ //联系人
|
|
|
+ JSONObject contact = new JSONObject();
|
|
|
+ //地址
|
|
|
+ JSONObject address = new JSONObject();
|
|
|
//数据行循环
|
|
|
for (int i = 0; i < datas.size(); i++) {
|
|
|
Map<String,String> data = datas.get(i);
|
|
|
@@ -157,13 +161,13 @@ public class ExcelServiceImpl implements ExcelService{
|
|
|
String value = null;
|
|
|
JSONObject mainData = null;
|
|
|
JSONObject detailData = null;
|
|
|
+ //标识是否一个主表的数据
|
|
|
+ boolean difference = true;
|
|
|
dd.setCompanyid(companyId);
|
|
|
dd.setDd_diid(keyvalue);
|
|
|
//主从表循环
|
|
|
for (int j = 0; j < positions.size(); j++) {
|
|
|
String position = positions.get(j);
|
|
|
- //标识是否一个主表的数据
|
|
|
- boolean difference = true;
|
|
|
//依据主从表分类
|
|
|
if ("main".equals(position)) {
|
|
|
List<TempletSet> main = columns.get(position);
|
|
|
@@ -224,40 +228,90 @@ public class ExcelServiceImpl implements ExcelService{
|
|
|
//从表字段
|
|
|
List<TempletSet> detail = columns.get(position);
|
|
|
detailData = new JSONObject();
|
|
|
- for (TempletSet set : detail) {
|
|
|
- //取excel值
|
|
|
- value = data.get(set.getDescription());
|
|
|
- if ("true".equals(set.getNecessary()) && StringUtils.isEmpty(value)) {
|
|
|
- detailData = null;
|
|
|
- //err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
|
|
|
- break;
|
|
|
+ //客户资料导入特殊处理
|
|
|
+ if ("Customer".equals(caller)) {
|
|
|
+ if (!difference) {
|
|
|
+ throw new BizException(987654, "第" + (i + 3) + "行 " + "客户资料导入时,从表最多存在一条记录");
|
|
|
}
|
|
|
- //检测日期类型是否规范
|
|
|
- if ("date".equals(set.getType()) && !StringUtils.isEmpty(value)) {
|
|
|
- value = praseDate(value);
|
|
|
- if (null == value) {
|
|
|
- err.append("第" + (i + 3) + "行 " + set.getDescription() + " 日期格式不正确!<br/> ");
|
|
|
+ for (TempletSet set : detail) {
|
|
|
+ //取excel值
|
|
|
+ value = data.get(set.getDescription());
|
|
|
+ if ("true".equals(set.getNecessary()) && StringUtils.isEmpty(value)) {
|
|
|
+ err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
|
|
|
break;
|
|
|
}
|
|
|
+ //检测日期类型是否规范
|
|
|
+ if ("date".equals(set.getType()) && !StringUtils.isEmpty(value)) {
|
|
|
+ value = praseDate(value);
|
|
|
+ if (null == value) {
|
|
|
+ err.append("第" + (i + 3) + "行 " + set.getDescription() + " 日期格式不正确!<br/> ");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //如果为数字类型且为空默认赋值0,检测是否为数字类型
|
|
|
+ if ("number".equals(set.getType())) {
|
|
|
+ if (StringUtils.isEmpty(value)) {
|
|
|
+ value = "0";
|
|
|
+ } else {
|
|
|
+ Boolean numner = isNumner(value);
|
|
|
+ if (!numner) {
|
|
|
+ err.append("第" + (i + 3) + "行 " + set.getDescription() + " 数字格式不正确!<br/> ");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(value) && !"0".equals(value)) {
|
|
|
+ if ("contact".equals(set.getPosition())) {
|
|
|
+ contact.put(set.getField(), value);
|
|
|
+ } else {
|
|
|
+ address.put(set.getField(), value);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- //如果为数字类型且为空默认赋值0,检测是否为数字类型
|
|
|
- if ("number".equals(set.getType())) {
|
|
|
- if (StringUtils.isEmpty(value)) {
|
|
|
- value = "0";
|
|
|
- } else {
|
|
|
- Boolean numner = isNumner(value);
|
|
|
- if (!numner) {
|
|
|
- err.append("第" + (i + 3) + "行 " + set.getDescription() + " 数字格式不正确!<br/> ");
|
|
|
+ if (contact.size() > 0 && address.size() > 0) {
|
|
|
+ dd.setDd_codevalue(codeValue);
|
|
|
+ detailData.put("contact", contact);
|
|
|
+ detailData.put("address", address);
|
|
|
+ dd.setDd_detaildata(detailData.toJSONString());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (TempletSet set : detail) {
|
|
|
+ //取excel值
|
|
|
+ value = data.get(set.getDescription());
|
|
|
+ if ("true".equals(set.getNecessary()) && StringUtils.isEmpty(value)) {
|
|
|
+ detailData = null;
|
|
|
+ //err.append("第" + (i + 3) + "行 " + set.getDescription() + " 必填字段未填写!<br/> ");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //检测日期类型是否规范
|
|
|
+ if ("date".equals(set.getType()) && !StringUtils.isEmpty(value)) {
|
|
|
+ value = praseDate(value);
|
|
|
+ if (null == value) {
|
|
|
+ err.append("第" + (i + 3) + "行 " + set.getDescription() + " 日期格式不正确!<br/> ");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ //如果为数字类型且为空默认赋值0,检测是否为数字类型
|
|
|
+ if ("number".equals(set.getType())) {
|
|
|
+ if (StringUtils.isEmpty(value)) {
|
|
|
+ value = "0";
|
|
|
+ } else {
|
|
|
+ Boolean numner = isNumner(value);
|
|
|
+ if (!numner) {
|
|
|
+ err.append("第" + (i + 3) + "行 " + set.getDescription() + " 数字格式不正确!<br/> ");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //拼从表数据
|
|
|
+ if (StringUtils.hasText(value) && !"0".equals(value)) {
|
|
|
+ detailData.put(set.getField(), value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (null != detailData && detailData.size() > 0) {
|
|
|
+ dd.setDd_codevalue(codeValue);
|
|
|
+ dd.setDd_detaildata(detailData.toJSONString());
|
|
|
}
|
|
|
- //拼从表数据
|
|
|
- detailData.put(set.getField(), value);
|
|
|
- }
|
|
|
- if (null != detailData && detailData.size() > 0) {
|
|
|
- dd.setDd_codevalue(codeValue);
|
|
|
- dd.setDd_detaildata(detailData.toJSONString());
|
|
|
}
|
|
|
}
|
|
|
}
|