package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.bean.dto.ProductionAccountDto; import com.ruoyi.production.bean.dto.ProductionProductMainDto; import com.ruoyi.production.bean.vo.ProductionAccountVo; import com.ruoyi.production.mapper.ProductionAccountMapper; import com.ruoyi.production.mapper.ProductionProductMainMapper; import com.ruoyi.production.pojo.ProductionAccount; import com.ruoyi.production.service.ProductionAccountService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.time.LocalDate; @Service @RequiredArgsConstructor public class ProductionAccountServiceImpl extends ServiceImpl implements ProductionAccountService { private final ProductionProductMainMapper productionProductMainMapper; @Override public IPage listPage(Page page, ProductionAccountDto dto) { ProductionAccountDto queryDto = normalizeDateQuery(dto); return baseMapper.listPage(page, queryDto); } @Override public IPage listProductionDetails(ProductionAccountDto dto, Page page) { return productionProductMainMapper.listProductionDetails(normalizeDateQuery(dto), page); } private ProductionAccountDto normalizeDateQuery(ProductionAccountDto dto) { if (dto == null) { return new ProductionAccountDto(); } LocalDate[] dateRange = dto.getDateRange(); if ((dto.getEntryDateStart() == null || dto.getEntryDateEnd() == null) && dateRange != null && dateRange.length > 0) { if (dto.getEntryDateStart() == null) { dto.setEntryDateStart(dateRange[0]); } if (dto.getEntryDateEnd() == null) { dto.setEntryDateEnd(dateRange.length > 1 ? dateRange[1] : dateRange[0]); } } String dateType = dto.getDateType(); if ("day".equalsIgnoreCase(dateType)) { if (dto.getEntryDate() == null && dateRange != null && dateRange.length > 0) { dto.setEntryDate(dateRange[0]); } if (dto.getEntryDate() == null) { dto.setEntryDate(dto.getEntryDateStart()); } dto.setEntryDateStart(null); dto.setEntryDateEnd(null); } else if ("month".equalsIgnoreCase(dateType)) { if ((dto.getEntryDateStart() == null || dto.getEntryDateEnd() == null) && dto.getEntryDate() != null) { LocalDate monthDate = dto.getEntryDate(); dto.setEntryDateStart(monthDate.withDayOfMonth(1)); dto.setEntryDateEnd(monthDate.withDayOfMonth(monthDate.lengthOfMonth())); } dto.setEntryDate(null); } return dto; } }