package com.bonus.index.service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.core.DateTimeHelper; import com.bonus.index.beans.IndexCheckWarnBean; import com.bonus.index.beans.IndexHomeCalendarBean; import com.bonus.index.beans.IndexHomeDetailsBean; import com.bonus.index.beans.IndexHomeTaskBean; import com.bonus.index.beans.IndexInuseWarnBean; import com.bonus.index.beans.IndexProjectBean; import com.bonus.index.beans.IndexStorageWarnBean; import com.bonus.index.beans.IndexTodoWarnBean; import com.bonus.index.beans.IndexTotalWarnBean; import com.bonus.index.dao.IndexHomeDetailsDao; import com.bonus.sys.BaseServiceImp; import sun.java2d.pipe.AATextRenderer; @Service("indexHomeDetails") public class IndexHomeDetailsServiceImp extends BaseServiceImp implements IndexHomeDetailsService{ @Autowired private IndexHomeDetailsDao dao; @Override public List getMaTypeDetails(IndexHomeDetailsBean o) { return dao.getMaTypeDetails(o); } @Override public List getMaChangeInfo(IndexHomeTaskBean o) { List rsList = new ArrayList<>(); IndexHomeTaskBean inStorage = dao.getInStorage(o); String date1 = inStorage != null ? inStorage.getCurrentDate() : null; IndexHomeTaskBean newStorage = dao.getNewStorage(o); String date2 = newStorage != null ? newStorage.getCurrentDate() : null; int rsDay = DateTimeHelper.calcDate(date1, date2); if(rsDay > 0){ rsList.add(inStorage); }else{ rsList.add(newStorage); } IndexHomeTaskBean outStorage = dao.getOutStorage(o); rsList.add(outStorage); IndexHomeTaskBean backStorage = dao.getBackStorage(o); rsList.add(backStorage); IndexHomeTaskBean scrapStorage = dao.getScrapStorage(o); rsList.add(scrapStorage); IndexHomeTaskBean pdStorage = dao.getPdStorage(o); rsList.add(pdStorage); return rsList; } @Override public List getMaUseInfo(IndexHomeTaskBean o) { List list = dao.getMaUseInfo(o); return list; } @Override public List getMaChangeTask(IndexHomeTaskBean o) { List rsList = new ArrayList<>(); List out = dao.getMaOutTask(o); List back = dao.getMaBackTask(o); List scrap = dao.getMaScrapTask(o); List pd = dao.getMaPdTask(o); List newList = dao.getMaNewTask(o); List inList = dao.getMaInTask(o); rsList.addAll(out); rsList.addAll(back); rsList.addAll(scrap); rsList.addAll(pd); rsList.addAll(newList); rsList.addAll(inList); return rsList; } @Override public List getMaOutTask(IndexHomeTaskBean o) { return dao.getMaOutTask(o); } @Override public List getMaBackTask(IndexHomeTaskBean o) { return dao.getMaBackTask(o); } @Override public List getMaScrapTask(IndexHomeTaskBean o) { return dao.getMaScrapTask(o); } @Override public List getMaPdTask(IndexHomeTaskBean o) { return dao.getMaPdTask(o); } @Override public List getMaNewTask(IndexHomeTaskBean o) { return dao.getMaNewTask(o); } @Override public List getMaInTask(IndexHomeTaskBean o) { return dao.getMaInTask(o); } @Override public List getStorageWarn(IndexStorageWarnBean o) { return dao.getStorageWarn(o); } @Override public List getCheckWarn(IndexCheckWarnBean o) { return dao.getCheckWarn(o); } @Override public List getInUseWarn(IndexInuseWarnBean o) { return dao.getInUseWarn(o); } @Override public List getPlanDetailsAboutExpireList(IndexInuseWarnBean o) { List list = dao.getPlanDetailsAboutExpireList(o); list.removeIf(Objects::isNull); for (IndexInuseWarnBean obj : list) { if (obj.getBackDate() == null || obj.getBackDate().trim().isEmpty()) { continue; } int daysRemaining = calculateDaysRemaining(obj.getBackDate()); if (daysRemaining > 0) { obj.setPlanStatus("还有 " + daysRemaining + " 天到期"); } else if (daysRemaining == 0) { obj.setPlanStatus("今天到期"); } else { obj.setPlanStatus("已过期 " + Math.abs(daysRemaining) + " 天"); } } return list; } /** * 计算传入日期与当前日期的天数差 * * @param dateStr 传入的日期字符串,格式为 yyyy-MM-dd * @return 返回天数差: * - 正数:还有几天到期 * - 0:今天到期 * - 负数:已过期几天 */ public static int calculateDaysRemaining(String dateStr) { // 定义日期格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 将字符串解析为 LocalDate LocalDate targetDate = LocalDate.parse(dateStr, formatter); // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 计算两个日期的天数差 long daysDifference = ChronoUnit.DAYS.between(currentDate, targetDate); // 返回天数差(转换为 int) return (int) daysDifference; } @Override public List getTotalChangeWarn(IndexTotalWarnBean o) { List rs = dao.getTotalChangeWarn(o); if(rs!=null && !rs.isEmpty()){ for(IndexTotalWarnBean b : rs){ b.setTypeId(b.getId()); IndexTotalWarnBean rb = dao.getTotalInfo(b); if (rb != null) { b.setTotal(rb.getTotal()); b.setStorageNum(rb.getStorageNum()); b.setRepairNum(rb.getRepairNum()); b.setInuseNum(rb.getInuseNum()); } } } return rs; } @Override public List getProjectDiff(IndexProjectBean o) { return dao.getProjectDiff(o); } @Override public List getProjectCompany(IndexProjectBean o) { return dao.getProjectCompany(o); } @Override public List getTodoList(IndexTodoWarnBean o) { List rs = new ArrayList<>(); List toOut = dao.getToOutList(o); List toBack = dao.getToBackList(o); List toNew = dao.getToNewList(o); rs.addAll(toOut); rs.addAll(toBack); rs.addAll(toNew); return rs; } @Override public List getToOutList(IndexTodoWarnBean o) { return dao.getToOutList(o); } @Override public List getToBackList(IndexTodoWarnBean o) { return dao.getToBackList(o); } @Override public List getToNewList(IndexTodoWarnBean o) { return dao.getToNewList(o); } @Override public List getProjectMaDiff(IndexProjectBean o) { return dao.getProjectMaDiff(o); } @Override public List getProjectMaRecord(IndexHomeTaskBean o) { List rsList = new ArrayList<>(); List out = dao.getMaOutTask(o); List back = dao.getMaBackTask(o); rsList.addAll(out); rsList.addAll(back); return rsList; } @Override public List getCalendarOut(IndexHomeCalendarBean o) { return dao.getCalendarOut(o); } @Override public List getCalendarBack(IndexHomeCalendarBean o) { return dao.getCalendarBack(o); } @Override public List getCalendarRepair(IndexHomeCalendarBean o) { return dao.getCalendarRepair(o); } @Override public List getCalendarScrap(IndexHomeCalendarBean o) { return dao.getCalendarScrap(o); } @Override public List getCalendarRepairInput(IndexHomeCalendarBean o) { return dao.getCalendarRepairInput(o); } @Override public List getCalendarNewInput(IndexHomeCalendarBean o) { return dao.getCalendarNewInput(o); } @Override public List getCalendarPd(IndexHomeCalendarBean o) { return dao.getCalendarPd(o); } }