doum
2026-06-18 93de43267e1663031fe5dc2f5ae40d128a182a76
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;