Bläddra i källkod

客户资料导入完善

guq 7 år sedan
förälder
incheckning
765386d99e

+ 80 - 26
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ExcelServiceImpl.java

@@ -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);
@@ -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, "客户资料导入时,从表最多存在一条记录");
                            }
-                           //检测日期类型是否规范
-                           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());
                        }
                    }
                 }

+ 34 - 9
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -516,7 +516,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             Integer detno = null;
             for (String code : datas.keySet()) {
                 listDTO = new CustomerFormDTO();
-                List<CustomercontactDTO> details_ = new ArrayList<>();
+                List<CustomercontactDTO> details_1 = new ArrayList<>();
+                List<CustomeraddressDTO> details_2 = new ArrayList<>();
                 int i = getMapper().validateCodeWhenInsert(code, companyId);
                 List<DataImportDetail> data = datas.get(code);
                 DataImportDetail main = dataImportMapper.selectMainBycode(code, id, companyId);
@@ -552,18 +553,33 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
                 if (data.size() > 0) {
                     detno = 1;
                     for (DataImportDetail vendorDetail : data) {
-                        CustomercontactDTO detail = JSONObject.parseObject(vendorDetail.getDd_detaildata(), CustomercontactDTO.class);
-                        if (null != detail) {
-                            detail.setCc_cuid(customerDTO.getId());
-                            detail.setCc_detno(detno);
-                            detno++;
-                            details_.add(detail);
+                        JSONObject obj = (JSONObject)JSONObject.parse(vendorDetail.getDd_detaildata());
+                        if ( null != obj.get("contact")) {
+                            parseDefault((JSONObject) obj.get("contact"), "cc_default");
                         }
+                        //客户联系人
+                        CustomercontactDTO contact = JSONObject.parseObject(String.valueOf(obj.get("contact")), CustomercontactDTO.class);
+                        if (null != contact) {
+                            contact.setCc_cuid(customerDTO.getId());
+                            contact.setCc_detno(detno);
+                            details_1.add(contact);
+                        }
+                        if ( null != obj.get("address")) {
+                            parseDefault((JSONObject) obj.get("address"), "ca_default");
+                        }
+                        //送货地址
+                        CustomeraddressDTO address = JSONObject.parseObject(String.valueOf(obj.get("address")), CustomeraddressDTO.class);
+                        if (null != address) {
+                            address.setCa_cuid(customerDTO.getId());
+                            address.setCa_detno(detno);
+                            details_2.add(address);
+                        }
+                        detno++;
                     }
                 }
                 listDTO.setMain(customerDTO);
-                listDTO.setItems1(details_);
-                listDTO.setItems2(new ArrayList<CustomeraddressDTO>());
+                listDTO.setItems1(details_1);
+                listDTO.setItems2(details_2);
                 list.add(listDTO);
             }
             if (err.length() > 0) {
@@ -577,6 +593,15 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         }
     }
 
+    private void parseDefault(JSONObject obj, String field) {
+        Object def = obj.get(field);
+       if ("是".equals(def)) {
+           obj.put(field, 1);
+       }else {
+           obj.put(field, 0);
+       }
+
+    }
 
     private List<CustomerList> getListByMode(ListReqDTO req) {
         List<CustomerList> list = null;