LAPTOP-FO2T5SIU\35838 5 月之前
父节点
当前提交
0281a8705c

+ 28 - 0
pro-base/src/main/java/com/idea/buildManage/constant/ConstantNodeType.java

@@ -0,0 +1,28 @@
+package com.idea.buildManage.constant;
+
+public class ConstantNodeType {
+
+    //认购
+    public final static String BUSINESS_TYPE_1 = "room_selection_info";
+
+    //签约
+    public final static String BUSINESS_TYPE_2 = "contract_manage";
+
+    //预付款
+    public final static String BUSINESS_TYPE_3 = "contract_manage_pay_log";
+
+    //开票
+    public final static String BUSINESS_TYPE_4 = "invoice_manage";
+
+    //入驻
+    public final static String BUSINESS_TYPE_5 = "check_in";
+
+    //产权
+    public final static String BUSINESS_TYPE_6 = "property_registration";
+
+    //回购、增购
+    public final static String BUSINESS_TYPE_7 = "buying_more";
+
+
+
+}

+ 26 - 0
pro-base/src/main/java/com/idea/buildManage/controller/ParkRoomController.java

@@ -13,6 +13,7 @@ import com.idea.buildManage.service.MnpBuildingService;
 import com.idea.buildManage.service.ParkFloorDiscService;
 import com.idea.buildManage.service.ParkInfoService;
 import com.idea.buildManage.service.ParkRoomService;
+import com.idea.buildManage.vo.ParkRoomHistory;
 import com.idea.invoice.util.InvoiceUtil;
 import com.idea.util.ExcelUtils;
 import com.rockstar.common.base.BaseController;
@@ -36,6 +37,7 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by pengyq on 2020.
@@ -198,4 +200,28 @@ public class ParkRoomController extends BaseController {
         return result;
     }
 
+    @PostMapping(value = "downLoadTemplate")
+    @ResponseBody
+    public void downLoadTemplate(HttpServletResponse response) throws IOException {
+        modelService.downLoadTemplate(response);
+    }
+
+
+    /**
+     * 房间历史
+     * @param houseId
+     * @return
+     */
+    @PostMapping(value = "roomHistory")
+    @ResponseBody
+    public Object roomHistory(String houseId) {
+        Map<Integer, ParkRoomHistory> result = modelService.roomHistory(houseId);
+        return result;
+    }
+
+
+
+
+
+
 }

+ 3 - 0
pro-base/src/main/java/com/idea/buildManage/excel/ParkRoomExcel.java

@@ -64,6 +64,9 @@ public class ParkRoomExcel implements Serializable {
     @ExcelProperty(value = "户型")
     private String houseType;
 
+    @ExcelProperty(value = "房屋性质")
+    private String nature;
+
     @ExcelProperty(value = "备注")
     private String remark;
 

+ 21 - 1
pro-base/src/main/java/com/idea/buildManage/excel/ParkRoomListener.java

@@ -64,6 +64,8 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
         List<Map<String, String>> decorationSituation = sysDictService.selectDictList("DECORATION_SITUATION");
         // 可售状态字典
         List<Map<String, String>> saleStatus = sysDictService.selectDictList("SALE_STATUS");
+        // 房屋性质字典
+        List<Map<String, String>> groupNature = sysDictService.selectDictList("GROUP_NATURE");
 
 
         if (CollectionUtils.isNotEmpty(excelList)) {
@@ -90,6 +92,7 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                 boolean decorationSituationFlag = true;
                 boolean houseTypeFlag = true;
                 boolean saleStatusFlag = true;
+                boolean natureFlag = true;
 
 
                 StringBuilder builder = new StringBuilder();
@@ -267,6 +270,23 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
                         }
                     }
 
+                    // 装修情况
+                    if (StringUtils.isNotEmpty(excel.getNature())) {
+                        for (Map<String, String> stringStringMap : groupNature) {
+                            if (stringStringMap.get("label").equals(excel.getNature())) {
+                                data.setNature(stringStringMap.get("value"));
+                            }
+                        }
+                        // 没匹配上的情况
+                        if (data.getNature() == null) {
+                            natureFlag = false;
+                            builder.append("房屋性质有误").append(",");
+                            excel.setNature("{" + excel.getNature() + "}");
+                        }
+                    }
+
+
+
                     // 可售状态
                     if (StringUtils.isEmpty(excel.getSaleStatus())) {
                         saleStatusFlag = false;
@@ -287,7 +307,7 @@ public class ParkRoomListener extends AnalysisEventListener<ParkRoomExcel> {
 
                     if (groupNameFlag && discNameFlag && buildNumFlag && roomNoFlag && floorFlag && actualInternalAreaFlag
                             && actualShareAreaFlag && actualBuildAreaFlag && roomUseFlag && decorationSituationFlag && houseTypeFlag
-                            && saleStatusFlag
+                            && saleStatusFlag && natureFlag
                     ) {
                         // TODO: 2024/9/11 户型处理
                         data.setId(IdUtil.simpleUUID());

+ 10 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoom.java

@@ -14,6 +14,8 @@ public class ParkRoom implements Serializable {
 
     private String roomNo;
 
+    private String nature;
+
     private String floor;
 
     private Double predictionInternalArea;
@@ -315,4 +317,12 @@ public class ParkRoom implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark == null ? null : remark.trim();
     }
+
+    public String getNature() {
+        return nature;
+    }
+
+    public void setNature(String nature) {
+        this.nature = nature;
+    }
 }

+ 70 - 0
pro-base/src/main/java/com/idea/buildManage/model/ParkRoomExample.java

@@ -455,6 +455,76 @@ public class ParkRoomExample {
             return (Criteria) this;
         }
 
+        public Criteria andNatureIsNull() {
+            addCriterion("nature is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureIsNotNull() {
+            addCriterion("nature is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureEqualTo(String value) {
+            addCriterion("nature =", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureNotEqualTo(String value) {
+            addCriterion("nature <>", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureGreaterThan(String value) {
+            addCriterion("nature >", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureGreaterThanOrEqualTo(String value) {
+            addCriterion("nature >=", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureLessThan(String value) {
+            addCriterion("nature <", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureLessThanOrEqualTo(String value) {
+            addCriterion("nature <=", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureLike(String value) {
+            addCriterion("nature like", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureNotLike(String value) {
+            addCriterion("nature not like", value, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureIn(List<String> values) {
+            addCriterion("nature in", values, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureNotIn(List<String> values) {
+            addCriterion("nature not in", values, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureBetween(String value1, String value2) {
+            addCriterion("nature between", value1, value2, "nature");
+            return (Criteria) this;
+        }
+
+        public Criteria andNatureNotBetween(String value1, String value2) {
+            addCriterion("nature not between", value1, value2, "nature");
+            return (Criteria) this;
+        }
+
         public Criteria andFloorIsNull() {
             addCriterion("floor is null");
             return (Criteria) this;

+ 262 - 16
pro-base/src/main/java/com/idea/buildManage/service/ParkRoomService.java

@@ -1,6 +1,8 @@
 package com.idea.buildManage.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.alibaba.excel.EasyExcel;
@@ -10,6 +12,7 @@ import com.alibaba.excel.write.metadata.fill.FillConfig;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.idea.buildManage.constant.ConstantNodeType;
 import com.idea.buildManage.excel.MnpBuildingExcel;
 import com.idea.buildManage.excel.ParkRoomExcel;
 import com.idea.buildManage.excel.WriteHandlerStrategy;
@@ -17,10 +20,33 @@ import com.idea.buildManage.mapper.ParkRoomExtendMapper;
 import com.idea.buildManage.mapper.ParkRoomMapper;
 import com.idea.buildManage.model.*;
 import com.idea.buildManage.response.ParkRoomResponse;
+import com.idea.buildManage.vo.ParkRoomHistory;
+import com.idea.buildManage.vo.ParkRoomNode;
+import com.idea.buyingMore.mapper.BuyingMoreMapper;
+import com.idea.buyingMore.model.BuyingMore;
+import com.idea.buyingMore.model.BuyingMoreExample;
+import com.idea.customerManagement.mapper.BuyerMapper;
+import com.idea.customerManagement.mapper.ContractManageMapper;
+import com.idea.customerManagement.mapper.CustomerManagementMapper;
 import com.idea.customerManagement.mapper.RoomSelectionInfoMapper;
-import com.idea.customerManagement.model.RoomSelectionInfo;
-import com.idea.customerManagement.model.RoomSelectionInfoExample;
+import com.idea.customerManagement.model.*;
+import com.idea.invoice.mapper.InvoiceManageMapper;
+import com.idea.invoice.model.InvoiceManage;
+import com.idea.invoice.model.InvoiceManageExample;
 import com.idea.invoice.util.InvoiceUtil;
+import com.idea.paymentManagement.mapper.PayLogMapper;
+import com.idea.paymentManagement.mapper.RefundManageMapper;
+import com.idea.paymentManagement.model.PayLog;
+import com.idea.paymentManagement.model.PayLogExample;
+import com.idea.paymentManagement.model.RefundManage;
+import com.idea.paymentManagement.model.RefundManageExample;
+import com.idea.saleManage.mapper.CheckInMapper;
+import com.idea.saleManage.mapper.PropertyRegistrationMapper;
+import com.idea.saleManage.model.CheckIn;
+import com.idea.saleManage.model.CheckInExample;
+import com.idea.saleManage.model.PropertyRegistration;
+import com.idea.saleManage.model.PropertyRegistrationExample;
+import com.idea.util.DateUtils;
 import com.rockstar.common.base.BaseService;
 import com.rockstar.common.conf.V2Config;
 import com.rockstar.common.support.Convert;
@@ -39,14 +65,13 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.beans.Transient;
+import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -69,6 +94,23 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
     private ParkFloorDiscService floorDiscService;
     @Autowired
     private ParkInfoService parkInfoService;
+    @Autowired
+    private ContractManageMapper contractManageMapper;
+    @Autowired
+    private CustomerManagementMapper customerManagementMapper;
+    @Autowired
+    private InvoiceManageMapper invoiceManageMapper;
+    @Autowired
+    private CheckInMapper checkInMapper;
+    @Autowired
+    private PropertyRegistrationMapper propertyRegistrationMapper;
+    @Autowired
+    private BuyingMoreMapper buyingMoreMapper;
+    @Autowired
+    private RefundManageMapper refundManageMapper;
+    @Autowired
+    private PayLogMapper payLogMapper;
+
 
     /**
      * 分页查询
@@ -225,20 +267,21 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
 
     /**
      * 批量插入
+     *
      * @param list
      */
-    public void insertBatch(List<ParkRoom> list){
+    public void insertBatch(List<ParkRoom> list) {
         extendMapper.insertBatch(list);
     }
 
-    public int delete(String id){
+    public int delete(String id) {
 
         // 已收取 已转 的定金
-        List<Integer> status = Arrays.asList(2,3);
+        List<Integer> status = Arrays.asList(2, 3);
         RoomSelectionInfoExample example = new RoomSelectionInfoExample();
         example.createCriteria().andHouseIdEqualTo(id).andStatusIn(status);
         List<RoomSelectionInfo> list = roomSelectionInfoMapper.selectByExample(example);
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             throw new RuntimeException("该房间已收取认购金,无法删除");
         }
         return deleteByPrimaryKey(id);
@@ -246,10 +289,11 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
 
     /**
      * 查询房屋全称
+     *
      * @param houseId
      * @return
      */
-    public ParkRoomResponse getFullName(String houseId){
+    public ParkRoomResponse getFullName(String houseId) {
         ParkRoomResponse response = extendMapper.getFullName(houseId);
         return response;
     }
@@ -259,9 +303,9 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
         example.createCriteria().andBuildIdEqualTo(model.getBuildId());
         Long count = countByExample(example);
         String number = "";
-        if(count.doubleValue() == 0){
+        if (count.doubleValue() == 0) {
             number = "001";
-        }else {
+        } else {
             count++;
             number = String.format("%03d", count);
         }
@@ -295,10 +339,11 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
 
     /**
      * 新增房间
+     *
      * @param record
      * @return
      */
-    public int add(ParkRoom record){
+    public int add(ParkRoom record) {
 
         String id = SnowflakeIdWorker.getUUID();
         record.setId(id);
@@ -347,17 +392,18 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
 
     }
 
-    public List<ParkRoom> selectNeedSendList(){
+    public List<ParkRoom> selectNeedSendList() {
         return extendMapper.selectNeedSendList();
     }
 
-    public ParkRoomResponse getById(String id){
+    public ParkRoomResponse getById(String id) {
 
         return extendMapper.getById(id);
     }
 
     /**
      * 房源档案列表
+     *
      * @param tablepar
      * @param record
      * @param dt
@@ -371,7 +417,207 @@ public class ParkRoomService implements BaseService<ParkRoom, ParkRoomExample> {
         return pageInfo;
     }
 
+    /**
+     * 下载房间导入模板
+     *
+     * @param response
+     * @throws IOException
+     */
+    public void downLoadTemplate(HttpServletResponse response) throws IOException {
 
+        File file = new File("/home/project/settleDown/tem/房间导入模板.xlsx");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String date = sdf.format(new Date());
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("房间导入模板" + date, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        OutputStream out = response.getOutputStream();
+        IoUtil.copy(FileUtil.getInputStream(file), out);
+        out.close();
+    }
+
+    /**
+     * 房间历史
+     *
+     * @param houseId
+     * @return
+     */
+    public Map<Integer, ParkRoomHistory> roomHistory(String houseId) {
+
+
+        Map<Integer, ParkRoomHistory> result = new HashMap<>();
+        // 先从认购金开始查询
+        RoomSelectionInfoExample roomSelectionInfoExample = new RoomSelectionInfoExample();
+        roomSelectionInfoExample.setOrderByClause("collection_time asc");
+        roomSelectionInfoExample.createCriteria().andHouseIdEqualTo(houseId).andStatusNotEqualTo(1);
+        List<RoomSelectionInfo> list = roomSelectionInfoMapper.selectByExample(roomSelectionInfoExample);
+        int order = 1;
+        for (RoomSelectionInfo roomSelectionInfo : list) {
+
+            ParkRoomHistory parkRoomHistory = new ParkRoomHistory();
+            List<ParkRoomNode> parkRoomNodes = new ArrayList<>();
+            ParkRoomNode parkRoomNode = new ParkRoomNode();
+            parkRoomNode.setNodeName("认购");
+            parkRoomNode.setBusinessId(roomSelectionInfo.getId());
+            parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_1);
+            parkRoomNode.setOrderNum(order);
+            parkRoomNode.setCustomerManagementId(roomSelectionInfo.getCustomerManagementId());
+            parkRoomNode.setHandleDate(roomSelectionInfo.getCollectionTime());
+            parkRoomNodes.add(parkRoomNode);
+            parkRoomHistory.setParkRoomNodes(parkRoomNodes);
+            result.put(order, parkRoomHistory);
+            order++;
+        }
+        for (Integer key : result.keySet()) {
+            ParkRoomHistory parkRoomHistory = result.get(key);
+            if (parkRoomHistory != null) {
+                List<ParkRoomNode> parkRoomNodes = parkRoomHistory.getParkRoomNodes();
+                String customerManagementId = parkRoomNodes.get(0).getCustomerManagementId();
+                CustomerManagement customerManagement = customerManagementMapper.selectByPrimaryKey(customerManagementId);
+                String buyerName = customerManagement.getBuyerName();
+                parkRoomHistory.setBuyerName(buyerName);
+                ParkRoomNode parkRoomNode;
+                // 查询合同 查询预付款
+                ContractManageExample contractManageExample = new ContractManageExample();
+                contractManageExample.createCriteria().andCustomerManagementIdEqualTo(customerManagementId)
+                        .andHouseIdEqualTo(houseId)
+                        .andContractStatusNotEqualTo(1);
+                List<ContractManage> contractManages = contractManageMapper.selectByExample(contractManageExample);
+                if (CollectionUtils.isNotEmpty(contractManages)) {
+
+                    ContractManage contractManage = contractManages.get(0);
+                    Date signingDate = contractManage.getSigningDate();
+
+                    parkRoomNode = new ParkRoomNode();
+                    parkRoomNode.setNodeName("签约");
+                    parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_2);
+                    parkRoomNode.setOrderNum(2);
+                    if (signingDate != null) {
+                        parkRoomNode.setHandleDate(contractManage.getSigningDate());
+                    }
+                    parkRoomNodes.add(parkRoomNode);
+
+                    // 查询预收款 收款时间
+                    PayLogExample payLogExample = new PayLogExample();
+                    payLogExample.createCriteria()
+                            .andContentTypeNotEqualTo(7).andContractIdEqualTo(contractManage.getId())
+                            .andStatusEqualTo(0).andPayTypeEqualTo(1);
+                    List<PayLog> payLogs = payLogMapper.selectByExample(payLogExample);
+                    Date date = payLogs.stream().map(PayLog::getPayTime).max(Date::compareTo).get();
+                    parkRoomNode = new ParkRoomNode();
+                    parkRoomNode.setNodeName("预付款");
+                    parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_3);
+                    parkRoomNode.setOrderNum(3);
+                    parkRoomNode.setHandleDate(date);
+                    parkRoomNodes.add(parkRoomNode);
+                }
+                // 查询开票
+                InvoiceManageExample invoiceManageExample = new InvoiceManageExample();
+                invoiceManageExample.createCriteria().andCustomerManagementIdEqualTo(customerManagementId);
+                List<InvoiceManage> invoiceManages = invoiceManageMapper.selectByExample(invoiceManageExample);
+                if (CollectionUtils.isNotEmpty(invoiceManages)) {
+
+                    //查询最大开票时间
+                    Date date = invoiceManages.stream().map(InvoiceManage::getInvoiceDate).max(Date::compareTo).get();
+                    parkRoomNode = new ParkRoomNode();
+                    parkRoomNode.setNodeName("开票");
+                    parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_4);
+                    parkRoomNode.setOrderNum(4);
+                    parkRoomNode.setHandleDate(date);
+                    parkRoomNodes.add(parkRoomNode);
+                }
+
+                // 查询入住 产权 增购回购
+                if (CollectionUtils.isNotEmpty(contractManages)) {
+                    String contractId = contractManages.get(0).getId();
+
+                    // 查询入住
+                    CheckInExample checkInExample = new CheckInExample();
+                    checkInExample.createCriteria().andContractManageIdEqualTo(contractId);
+                    List<CheckIn> checkIns = checkInMapper.selectByExample(checkInExample);
+                    if (CollectionUtils.isNotEmpty(checkIns)) {
+
+                        Date inDate = checkIns.get(0).getInDate();
+                        parkRoomNode = new ParkRoomNode();
+                        parkRoomNode.setNodeName("入驻");
+                        parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_5);
+                        parkRoomNode.setOrderNum(5);
+                        parkRoomNode.setHandleDate(inDate);
+                        parkRoomNodes.add(parkRoomNode);
+                    }
+
+                    // 查询产权
+                    PropertyRegistrationExample propertyRegistrationExample = new PropertyRegistrationExample();
+                    propertyRegistrationExample.createCriteria().andContractManageIdEqualTo(contractId);
+                    List<PropertyRegistration> propertyRegistrations = propertyRegistrationMapper.selectByExample(propertyRegistrationExample);
+                    if (CollectionUtils.isNotEmpty(propertyRegistrations)) {
+
+                        Date operateTime = propertyRegistrations.get(0).getOperateTime();
+                        parkRoomNode = new ParkRoomNode();
+                        parkRoomNode.setNodeName("产权");
+                        parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_6);
+                        parkRoomNode.setOrderNum(6);
+                        parkRoomNode.setHandleDate(operateTime);
+                        parkRoomNodes.add(parkRoomNode);
+                    }
+
+                    // 查询增购回购
+                    BuyingMoreExample buyingMoreExample = new BuyingMoreExample();
+                    buyingMoreExample.createCriteria().andContractIdEqualTo(contractId);
+                    List<BuyingMore> buyingMores = buyingMoreMapper.selectByExample(buyingMoreExample);
+                    if (CollectionUtils.isNotEmpty(buyingMores)) {
+
+                        BuyingMore buyingMore = buyingMores.stream().max(Comparator.comparing(BuyingMore::getSigningDate)).get();
+
+                        parkRoomNode = new ParkRoomNode();
+                        parkRoomNode.setNodeName("回购/增购");
+                        parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_7);
+                        parkRoomNode.setOrderNum(7);
+                        parkRoomNode.setHandleDate(buyingMore.getSigningDate());
+                        parkRoomNodes.add(parkRoomNode);
+                    }
+
+                }
+
+                // 查询退房
+                RefundManageExample refundManageExample = new RefundManageExample();
+                refundManageExample.createCriteria().andHouseIdEqualTo(houseId);
+                List<RefundManage> refundManages = refundManageMapper.selectByExample(refundManageExample);
+                if (CollectionUtils.isNotEmpty(refundManages)) {
+
+                    Date createdAt = refundManages.get(0).getCreatedAt();
+                    parkRoomNode = new ParkRoomNode();
+                    parkRoomNode.setNodeName("回购/增购");
+                    parkRoomNode.setBusinessType(ConstantNodeType.BUSINESS_TYPE_7);
+                    parkRoomNode.setOrderNum(7);
+                    parkRoomNode.setHandleDate(createdAt);
+                    parkRoomNodes.add(parkRoomNode);
+                }
+
+            }
+
+
+        }
+
+        String startDate = "";
+        String endDate = "";
+        // 排序
+        for (Integer key : result.keySet()) {
+            ParkRoomHistory parkRoomHistory = result.get(key);
+            List<ParkRoomNode> parkRoomNodes = parkRoomHistory.getParkRoomNodes();
+            ParkRoomNode max = parkRoomNodes.stream().max(Comparator.comparing(ParkRoomNode::getHandleDate)).get();
+            if (max != null) {
+                endDate = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm",max.getHandleDate());
+            }
+            Date handleDate = parkRoomNodes.get(0).getHandleDate();
+            startDate = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm",handleDate);
+            parkRoomHistory.setStartDate(startDate);
+            parkRoomHistory.setEndDate(endDate);
+        }
+
+        return result;
+    }
 
 
 }

+ 18 - 0
pro-base/src/main/java/com/idea/buildManage/vo/ParkRoomHistory.java

@@ -0,0 +1,18 @@
+package com.idea.buildManage.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ParkRoomHistory {
+
+    private String startDate;
+
+    private String endDate;
+
+    private String buyerName;
+
+    private List<ParkRoomNode> parkRoomNodes;
+
+}

+ 22 - 0
pro-base/src/main/java/com/idea/buildManage/vo/ParkRoomNode.java

@@ -0,0 +1,22 @@
+package com.idea.buildManage.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ParkRoomNode {
+
+    private String nodeName;
+
+    private String businessId;
+
+    private String businessType;
+
+    private Integer orderNum;
+
+    private String customerManagementId;
+
+    private Date handleDate;
+
+}

+ 2 - 2
pro-base/src/main/java/com/idea/customerManagement/service/CustomerManagementService.java

@@ -821,7 +821,7 @@ public class CustomerManagementService implements BaseService<CustomerManagement
                             excel.setRoomSelectionDate("{" + excel.getRoomSelectionDate() + "}");
                         } else {
                             try {
-                                Date roomSelectionDate = DateUtils.parseDate(excel.getRoomSelectionDate(), DateUtils.YYYY_MM_DD_HH_MM_SS);
+                                Date roomSelectionDate = DateUtils.parseDate(excel.getRoomSelectionDate(), "yyyy/MM/dd HH:mm");
                                 data.setRoomSelectionDate(roomSelectionDate);
                             } catch (Exception e) {
                                 roomSelectionDateFlag = false;
@@ -979,7 +979,7 @@ public class CustomerManagementService implements BaseService<CustomerManagement
 
     public void downLoadTemplate(HttpServletResponse response) throws IOException {
 
-        File file = new File("/home/project/settleDown/tem/选房客户导入模.xlsx");
+        File file = new File("/home/project/settleDown/tem/选房客户导入模.xlsx");
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String date = sdf.format(new Date());
         response.setContentType("application/vnd.ms-excel");

文件差异内容过多而无法显示
+ 697 - 680
pro-base/src/main/resources/mybatis/buildManage/ParkRoomMapper.xml