|
@@ -14,15 +14,15 @@ import com.rockstar.system.service.SysDictService;
|
|
|
import com.rockstar.util.StringUtils;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
|
|
|
|
|
|
- private List<ParkInfo> list = new ArrayList<>();
|
|
|
+ private List<ParkInfo> insertList = new ArrayList<>();
|
|
|
+
|
|
|
+ private List<ParkInfo> updateList = new ArrayList<>();
|
|
|
|
|
|
private List<ParkInfoExcel> excelList = new ArrayList<>();
|
|
|
|
|
@@ -61,12 +61,29 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
|
|
|
List<Map<String, String>> saleStatus = sysDictService.selectDictList("SALE_STATUS");
|
|
|
// 公司名称
|
|
|
List<Map<String, String>> companyNames = sysDictService.selectDictList("COMPANY_NAME");
|
|
|
+ // 预售许可证编号
|
|
|
+ Map<String, String> numberIdMap = parkInfoService.getNumberIdMap();
|
|
|
+
|
|
|
|
|
|
- if(CollectionUtils.isNotEmpty(excelList)){
|
|
|
+ if (CollectionUtils.isNotEmpty(excelList)) {
|
|
|
ParkInfo data;
|
|
|
ParkInfoExcel excel = null;
|
|
|
|
|
|
- for(int i = 0; i < excelList.size(); i++){
|
|
|
+ // 先循环判断表格中是否有重复数据
|
|
|
+ Map<String, Integer> map = new HashMap<>();
|
|
|
+ for (ParkInfoExcel excelItem : excelList) {
|
|
|
+ map.put(excelItem.getPreSalesLicenseNumber(), map.getOrDefault(excelItem.getPreSalesLicenseNumber(), 0) + 1);
|
|
|
+ }
|
|
|
+ for (ParkInfoExcel excelItem : excelList) {
|
|
|
+ if (map.get(excelItem.getPreSalesLicenseNumber()) > 1) {
|
|
|
+ excelItem.setDuplicate(true);
|
|
|
+ }else {
|
|
|
+ excelItem.setDuplicate(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (int i = 0; i < excelList.size(); i++) {
|
|
|
|
|
|
boolean groupNameFlag = true;
|
|
|
boolean natureFlag = true;
|
|
@@ -74,107 +91,130 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
|
|
|
boolean companyNameFlag = true;
|
|
|
boolean areaStatusFlag = true;
|
|
|
boolean saleStatusFlag = true;
|
|
|
+ boolean duplicateFlag = true;
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
-
|
|
|
-
|
|
|
try {
|
|
|
data = new ParkInfo();
|
|
|
excel = excelList.get(i);
|
|
|
-
|
|
|
- if(StringUtils.isEmpty(excel.getGroupName())){
|
|
|
- groupNameFlag = false;
|
|
|
- builder.append("楼盘/小区名称为空").append(",");
|
|
|
- excel.setGroupName("{" + excel.getGroupName() + "}");
|
|
|
- }
|
|
|
- data.setGroupName(excel.getGroupName());
|
|
|
-
|
|
|
- if(StringUtils.isEmpty(excel.getNature())){
|
|
|
- natureFlag = false;
|
|
|
- builder.append("性质为空").append(",");
|
|
|
- excel.setNature("{" + excel.getNature() + "}");
|
|
|
- }
|
|
|
- for (Map<String, String> stringStringMap : groupNature) {
|
|
|
- if (stringStringMap.get("label").equals(excel.getNature())) {
|
|
|
- data.setNature(stringStringMap.get("value"));
|
|
|
+ // 重复数据标识
|
|
|
+ if (excel.getDuplicate()) {
|
|
|
+ duplicateFlag = false;
|
|
|
+ Class<?> clazz = excel.getClass();
|
|
|
+ Field[] fields = clazz.getDeclaredFields();
|
|
|
+ // 给所有字段打上标记 标红
|
|
|
+ for (Field field : fields) {
|
|
|
+ field.setAccessible(true);
|
|
|
+ if(field.getType().equals(String.class) && field.get(excel) != null){
|
|
|
+ field.set(excel, "{" + field.get(excel) + "}");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- // 没匹配上的情况
|
|
|
- if(StringUtils.isEmpty(data.getNature())){
|
|
|
- natureFlag = false;
|
|
|
- builder.append("性质格式有误").append(",");
|
|
|
- excel.setNature("{" + excel.getNature() + "}");
|
|
|
- }
|
|
|
-
|
|
|
- // 预销售许可证编号
|
|
|
- if(StringUtils.isEmpty(excel.getPreSalesLicenseNumber())){
|
|
|
- preSalesLicenseNumberFlag = false;
|
|
|
- builder.append("预销售许可证编号为空").append(",");
|
|
|
- excel.setPreSalesLicenseNumber("{" + excel.getPreSalesLicenseNumber() + "}");
|
|
|
- }
|
|
|
- data.setPreSalesLicenseNumber(excel.getPreSalesLicenseNumber());
|
|
|
+ builder.append("数据重复");
|
|
|
+ throw new RuntimeException(builder.toString());
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isEmpty(excel.getGroupName())) {
|
|
|
+ groupNameFlag = false;
|
|
|
+ builder.append("楼盘/小区名称为空").append(",");
|
|
|
+ excel.setGroupName("{" + excel.getGroupName() + "}");
|
|
|
+ }
|
|
|
+ data.setGroupName(excel.getGroupName());
|
|
|
|
|
|
- // 开发公司
|
|
|
- if(StringUtils.isNotEmpty(excel.getCompanyName())){
|
|
|
- for (Map<String, String> stringStringMap : companyNames) {
|
|
|
- if (stringStringMap.get("label").equals(excel.getCompanyName())) {
|
|
|
- data.setCompanyId(stringStringMap.get("value"));
|
|
|
+ if (StringUtils.isEmpty(excel.getNature())) {
|
|
|
+ natureFlag = false;
|
|
|
+ builder.append("性质为空").append(",");
|
|
|
+ excel.setNature("{" + excel.getNature() + "}");
|
|
|
+ }
|
|
|
+ for (Map<String, String> stringStringMap : groupNature) {
|
|
|
+ if (stringStringMap.get("label").equals(excel.getNature())) {
|
|
|
+ data.setNature(stringStringMap.get("value"));
|
|
|
}
|
|
|
}
|
|
|
// 没匹配上的情况
|
|
|
- if(data.getCompanyId() == null){
|
|
|
- companyNameFlag = false;
|
|
|
- builder.append("公司名称有误").append(",");
|
|
|
- excel.setCompanyName("{" + excel.getCompanyName() + "}");
|
|
|
+ if (StringUtils.isEmpty(data.getNature())) {
|
|
|
+ natureFlag = false;
|
|
|
+ builder.append("性质格式有误").append(",");
|
|
|
+ excel.setNature("{" + excel.getNature() + "}");
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // 楼盘面积测绘状态
|
|
|
- if(StringUtils.isNotEmpty(excel.getAreaStatus())){
|
|
|
- for (Map<String, String> stringStringMap : mappingStatus) {
|
|
|
- if (stringStringMap.get("label").equals(excel.getAreaStatus())) {
|
|
|
- data.setAreaStatus(Integer.valueOf(stringStringMap.get("value")));
|
|
|
- }
|
|
|
+ // 预销售许可证编号
|
|
|
+ if (StringUtils.isEmpty(excel.getPreSalesLicenseNumber())) {
|
|
|
+ preSalesLicenseNumberFlag = false;
|
|
|
+ builder.append("预销售许可证编号为空").append(",");
|
|
|
+ excel.setPreSalesLicenseNumber("{" + excel.getPreSalesLicenseNumber() + "}");
|
|
|
}
|
|
|
- // 没匹配上的情况
|
|
|
- if(data.getAreaStatus() == null){
|
|
|
- areaStatusFlag = false;
|
|
|
- builder.append("楼盘面积测绘状态格式有误").append(",");
|
|
|
- excel.setAreaStatus("{" + excel.getAreaStatus() + "}");
|
|
|
+ data.setPreSalesLicenseNumber(excel.getPreSalesLicenseNumber());
|
|
|
+
|
|
|
+ // 开发公司
|
|
|
+ if (StringUtils.isNotEmpty(excel.getCompanyName())) {
|
|
|
+ for (Map<String, String> stringStringMap : companyNames) {
|
|
|
+ if (stringStringMap.get("label").equals(excel.getCompanyName())) {
|
|
|
+ data.setCompanyId(stringStringMap.get("value"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 没匹配上的情况
|
|
|
+ if (data.getCompanyId() == null) {
|
|
|
+ companyNameFlag = false;
|
|
|
+ builder.append("公司名称有误").append(",");
|
|
|
+ excel.setCompanyName("{" + excel.getCompanyName() + "}");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // 楼盘销售状态
|
|
|
- if(StringUtils.isNotEmpty(excel.getSaleStatus())){
|
|
|
- for (Map<String, String> stringStringMap : saleStatus) {
|
|
|
- if (stringStringMap.get("label").equals(excel.getSaleStatus())) {
|
|
|
- data.setSaleStatus(Integer.valueOf(stringStringMap.get("value")));
|
|
|
+ // 楼盘面积测绘状态
|
|
|
+ if (StringUtils.isNotEmpty(excel.getAreaStatus())) {
|
|
|
+ for (Map<String, String> stringStringMap : mappingStatus) {
|
|
|
+ if (stringStringMap.get("label").equals(excel.getAreaStatus())) {
|
|
|
+ data.setAreaStatus(Integer.valueOf(stringStringMap.get("value")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 没匹配上的情况
|
|
|
+ if (data.getAreaStatus() == null) {
|
|
|
+ areaStatusFlag = false;
|
|
|
+ builder.append("楼盘面积测绘状态格式有误").append(",");
|
|
|
+ excel.setAreaStatus("{" + excel.getAreaStatus() + "}");
|
|
|
}
|
|
|
}
|
|
|
- // 没匹配上的情况
|
|
|
- if(data.getSaleStatus() == null){
|
|
|
- saleStatusFlag = false;
|
|
|
- builder.append("楼盘销售状态格式有误").append(",");
|
|
|
- excel.setSaleStatus("{" + excel.getSaleStatus() + "}");
|
|
|
+
|
|
|
+ // 楼盘销售状态
|
|
|
+ if (StringUtils.isNotEmpty(excel.getSaleStatus())) {
|
|
|
+ for (Map<String, String> stringStringMap : saleStatus) {
|
|
|
+ if (stringStringMap.get("label").equals(excel.getSaleStatus())) {
|
|
|
+ data.setSaleStatus(Integer.valueOf(stringStringMap.get("value")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 没匹配上的情况
|
|
|
+ if (data.getSaleStatus() == null) {
|
|
|
+ saleStatusFlag = false;
|
|
|
+ builder.append("楼盘销售状态格式有误").append(",");
|
|
|
+ excel.setSaleStatus("{" + excel.getSaleStatus() + "}");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (groupNameFlag && natureFlag && preSalesLicenseNumberFlag && companyNameFlag && areaStatusFlag && saleStatusFlag
|
|
|
+ if (groupNameFlag && natureFlag && preSalesLicenseNumberFlag && companyNameFlag && areaStatusFlag
|
|
|
+ && saleStatusFlag && duplicateFlag
|
|
|
) {
|
|
|
String[] IGNORE_ISOLATOR_PROPERTIES = new String[]{"groupName", "nature", "preSalesLicenseNumber", "areaStatus", "saleStatus"};
|
|
|
- BeanUtil.copyProperties(excel,data,IGNORE_ISOLATOR_PROPERTIES);
|
|
|
- String id = IdUtil.simpleUUID();
|
|
|
- data.setId(id);
|
|
|
- data.setGroupId(id);
|
|
|
- data.setCreatedId(ShiroUtils.getUserId());
|
|
|
- data.setCreatedAt(new Date());
|
|
|
- list.add(data);
|
|
|
- }else {
|
|
|
+ BeanUtil.copyProperties(excel, data, IGNORE_ISOLATOR_PROPERTIES);
|
|
|
+ // 判断 预销售许可证编号系统中是否存在 存在就更新 不存在就新增
|
|
|
+ if (numberIdMap.containsKey(excel.getPreSalesLicenseNumber())) {
|
|
|
+ data.setId(numberIdMap.get(excel.getPreSalesLicenseNumber()));
|
|
|
+ data.setGroupId(numberIdMap.get(excel.getPreSalesLicenseNumber()));
|
|
|
+ data.setUpdatedAt(new Date());
|
|
|
+ updateList.add(data);
|
|
|
+ } else {
|
|
|
+ String id = IdUtil.simpleUUID();
|
|
|
+ data.setId(id);
|
|
|
+ data.setGroupId(id);
|
|
|
+ data.setCreatedId(ShiroUtils.getUserId());
|
|
|
+ data.setCreatedAt(new Date());
|
|
|
+ insertList.add(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
throw new RuntimeException(builder.toString());
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
- }catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
String message = e.getMessage();
|
|
|
excel.setReason(message);
|
|
@@ -182,7 +222,7 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- count = list.size();
|
|
|
+ count = insertList.size() + updateList.size();
|
|
|
jsonObject.put("successCount", count);
|
|
|
jsonObject.put("errorList", badList);
|
|
|
jsonObject.put("errorCount", badList.size());
|
|
@@ -190,18 +230,21 @@ public class ParkInfoListener extends AnalysisEventListener<ParkInfoExcel> {
|
|
|
saveData();
|
|
|
|
|
|
excelList.clear();
|
|
|
- list.clear();
|
|
|
+ insertList.clear();
|
|
|
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new RuntimeException("excel无数据");
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void saveData(){
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- parkInfoService.insertBatch(list);
|
|
|
+ private void saveData() {
|
|
|
+ if (CollectionUtils.isNotEmpty(insertList)) {
|
|
|
+ parkInfoService.insertBatch(insertList);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(updateList)) {
|
|
|
+ parkInfoService.updateBatch(updateList);
|
|
|
}
|
|
|
}
|
|
|
}
|