From 93de43267e1663031fe5dc2f5ae40d128a182a76 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 18 六月 2026 17:24:51 +0800
Subject: [PATCH] 新增智能电表、空调管理
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5BizServiceImpl.java | 61 +++++++++++++++++++++++++-----
1 files changed, 51 insertions(+), 10 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5BizServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5BizServiceImpl.java
index 78e0714..d9494ab 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5BizServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerH5BizServiceImpl.java
@@ -13,6 +13,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwContractBillMapper;
+import com.doumee.dao.business.YwContractDetailMapper;
import com.doumee.dao.business.YwContractMapper;
import com.doumee.dao.business.YwContractRevenueMapper;
import com.doumee.dao.business.YwContractRoomMapper;
@@ -28,6 +29,8 @@
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.model.Multifile;
+import com.doumee.service.business.YwCustomerDeviceAutoBindService;
+import com.doumee.service.business.YwCustomerH5AuthService;
import com.doumee.service.business.YwCustomerH5BizService;
import com.doumee.service.business.YwCustomerRechargeBizService;
import com.doumee.service.business.YwElectricalBizService;
@@ -56,6 +59,8 @@
@Autowired
private YwCustomerRechargeBizService ywCustomerRechargeBizService;
@Autowired
+ private YwCustomerDeviceAutoBindService ywCustomerDeviceAutoBindService;
+ @Autowired
private YwCustomerElectricalMapper ywCustomerElectricalMapper;
@Autowired
private YwElectricalMapper ywElectricalMapper;
@@ -63,6 +68,8 @@
private YwElectricalBizService ywElectricalBizService;
@Autowired
private YwContractMapper ywContractMapper;
+ @Autowired
+ private YwContractDetailMapper ywContractDetailMapper;
@Autowired
private YwContractBillMapper ywContractBillMapper;
@Autowired
@@ -75,6 +82,8 @@
private MultifileMapper multifileMapper;
@Autowired
private SystemDictDataBiz systemDictDataBiz;
+ @Autowired
+ private YwCustomerH5AuthService ywCustomerH5AuthService;
@Override
public List<YwH5Banner> listBanners() {
@@ -82,11 +91,14 @@
}
@Override
- public Map<String, Object> home(Integer customerId) {
+ public Map<String, Object> home(Integer customerId, Integer memberId) {
YwCustomer customer = requireCustomer(customerId);
+ LoginUserInfo loginUser = ywCustomerH5AuthService.buildLoginUserInfo(customerId, memberId);
YwCustomerRechargeDetailVO detail = ywCustomerRechargeBizService.getDetail(customerId);
Map<String, Object> map = new LinkedHashMap<>();
- map.put("customerName", customer.getName());
+ map.put("customerName", loginUser.getCustomerName() != null ? loginUser.getCustomerName() : customer.getName());
+ map.put("memberName", loginUser.getMemberName());
+ map.put("displayName", loginUser.getDisplayName());
map.put("electricalCount", detail.getElectricalList() != null ? detail.getElectricalList().size() : 0);
map.put("conditionerCount", detail.getConditionerList() != null ? detail.getConditionerList().size() : 0);
map.put("gsConfig", detail.getGsConfig());
@@ -97,6 +109,7 @@
@Override
public PageData<CustomerDeviceH5VO> devicePage(PageWrap<CustomerDeviceQueryDTO> pageWrap, Integer customerId) {
requireCustomer(customerId);
+ ywCustomerDeviceAutoBindService.refreshCustomerDevices(customerId, systemUser());
CustomerDeviceQueryDTO q = pageWrap.getModel() != null ? pageWrap.getModel() : new CustomerDeviceQueryDTO();
List<CustomerDeviceH5VO> all = new ArrayList<>();
if (q.getDeviceType() == null || q.getDeviceType() == 0) {
@@ -212,6 +225,9 @@
wrapper.eq(YwContractBill::getPayStatus, Constants.ONE);
}
}
+ if (q != null && q.getCostType() != null) {
+ wrapper.eq(YwContractBill::getCostType, q.getCostType());
+ }
wrapper.orderByDesc(YwContractBill::getPlanPayDate);
IPage<YwContractBill> result = ywContractBillMapper.selectJoinPage(page, YwContractBill.class, wrapper);
enrichBillsWithContract(result.getRecords());
@@ -248,10 +264,8 @@
if (Objects.equals(customer.getFirstRechargeDone(), Constants.ONE)) {
return;
}
- List<Integer> electricalIds = ywCustomerElectricalMapper.selectList(new QueryWrapper<YwCustomerElectrical>().lambda()
- .eq(YwCustomerElectrical::getCustomerId, customerId)
- .eq(YwCustomerElectrical::getIsdeleted, Constants.ZERO))
- .stream().map(YwCustomerElectrical::getElectricalId).collect(Collectors.toList());
+ ywCustomerDeviceAutoBindService.refreshCustomerDevices(customerId, user != null ? user : systemUser());
+ List<Integer> electricalIds = ywCustomerDeviceAutoBindService.listElectricalIdsByActiveContracts(customerId);
for (Integer eid : electricalIds) {
YwCustomerRechargeElectricalDTO dto = new YwCustomerRechargeElectricalDTO();
dto.setCustomerId(customerId);
@@ -274,10 +288,7 @@
}
private List<CustomerDeviceH5VO> buildElectricalDevices(Integer customerId) {
- List<Integer> ids = ywCustomerElectricalMapper.selectList(new QueryWrapper<YwCustomerElectrical>().lambda()
- .eq(YwCustomerElectrical::getCustomerId, customerId)
- .eq(YwCustomerElectrical::getIsdeleted, Constants.ZERO))
- .stream().map(YwCustomerElectrical::getElectricalId).collect(Collectors.toList());
+ List<Integer> ids = ywCustomerDeviceAutoBindService.listElectricalIdsByActiveContracts(customerId);
if (ids.isEmpty()) {
return Collections.emptyList();
}
@@ -291,6 +302,7 @@
vo.setDeviceId(e.getId());
vo.setDeviceName(e.getName());
vo.setMeterAccountNo(e.getParamId());
+ vo.setMeterAddress(e.getAddress());
vo.setRoomInfo(e.getRoomNames());
vo.setBalance(e.getBalance());
vo.setBalanceLow(e.getBalance() != null && e.getBalance().compareTo(new BigDecimal("50")) < 0);
@@ -339,6 +351,13 @@
return true;
}
+ private LoginUserInfo systemUser() {
+ LoginUserInfo user = new LoginUserInfo();
+ user.setId(1);
+ user.setRealname("system");
+ return user;
+ }
+
private YwCustomer requireCustomer(Integer customerId) {
YwCustomer c = ywCustomerMapper.selectById(customerId);
if (c == null || Objects.equals(c.getIsdeleted(), Constants.ONE)) {
@@ -385,6 +404,7 @@
applyRoomSummary(contract, roomMap.getOrDefault(contract.getId(), Collections.emptyList()));
contract.setPayTypeText(resolvePayTypeText(contract));
contract.setFreeRentPeriod(resolveFreeRentPeriod(contract));
+ initContractDetails(contract);
fillBillStatusTip(contract, loadContractBillMap(Collections.singletonList(contract.getId()))
.getOrDefault(contract.getId(), Collections.emptyList()));
if (withFiles) {
@@ -588,6 +608,26 @@
|| Constants.equalsInteger(payStatus, Constants.FOUR);
}
+ private void initContractDetails(YwContract contract) {
+ if (contract == null || contract.getId() == null) {
+ return;
+ }
+ contract.setZlDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,
+ new MPJLambdaWrapper<YwContractDetail>()
+ .selectAll(YwContractDetail.class)
+ .eq(YwContractDetail::getIsdeleted, Constants.ZERO)
+ .eq(YwContractDetail::getContractId, contract.getId())
+ .in(YwContractDetail::getType, Constants.ZERO, Constants.TWO)
+ .orderByAsc(YwContractDetail::getSortnum)));
+ contract.setWyDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,
+ new MPJLambdaWrapper<YwContractDetail>()
+ .selectAll(YwContractDetail.class)
+ .eq(YwContractDetail::getIsdeleted, Constants.ZERO)
+ .eq(YwContractDetail::getContractId, contract.getId())
+ .in(YwContractDetail::getType, Constants.ONE, Constants.THREE)
+ .orderByAsc(YwContractDetail::getSortnum)));
+ }
+
private void initContractFiles(YwContract contract) {
List<Multifile> multifiles = multifileMapper.selectJoinList(Multifile.class, new MPJLambdaWrapper<Multifile>()
.selectAll(Multifile.class)
@@ -674,6 +714,7 @@
.eq(YwContractBill::getStatus, Constants.ZERO)
.eq(YwContractBill::getContractId, contractId)
.eq(YwContractBill::getBillType, billType != null ? billType : Constants.ZERO)
+ .orderByDesc(YwContractBill::getPlanPayDate)
.orderByDesc(YwContractBill::getId));
enrichContractBillsForH5(bills);
return bills;
--
Gitblit v1.9.3