|
@@ -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;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
}
|