From 947e0213db7d81b5dbbf1db5bf891f83430a53f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=83=9C=E8=B6=85?= <504565038@qq.com> Date: Tue, 13 May 2025 10:45:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=9B=E5=BA=A6=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/IProductionPlanMapper.java | 5 +- .../service/IIProductionPlanService.java | 2 +- .../impl/IProductionPlanServiceImpl.java | 115 +++++++++--------- .../mappers/IProductionPlanMapper.xml | 6 +- 4 files changed, 68 insertions(+), 60 deletions(-) diff --git a/src/main/java/com/zilber/boot/intelligencesite/mapper/IProductionPlanMapper.java b/src/main/java/com/zilber/boot/intelligencesite/mapper/IProductionPlanMapper.java index 7192dba..7272f5d 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/mapper/IProductionPlanMapper.java +++ b/src/main/java/com/zilber/boot/intelligencesite/mapper/IProductionPlanMapper.java @@ -2,6 +2,7 @@ package com.zilber.boot.intelligencesite.mapper; import com.zilber.boot.intelligencesite.entity.IProductionPlan; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -25,5 +26,7 @@ public interface IProductionPlanMapper extends BaseMapper { List bigscreenProgress(); - List statistics(String date); + List statistics(); + + IProductionPlan statisticsByDateAndName(@Param("id") Long id, @Param("date") String date); } diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/IIProductionPlanService.java b/src/main/java/com/zilber/boot/intelligencesite/service/IIProductionPlanService.java index 64bee96..26eb7a5 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/IIProductionPlanService.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/IIProductionPlanService.java @@ -18,7 +18,7 @@ public interface IIProductionPlanService extends IService { List queryList(IProductionPlan iProductionPlan); - Map statistics(); + List> statistics(); List querywarn(Integer day); diff --git a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IProductionPlanServiceImpl.java b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IProductionPlanServiceImpl.java index 524191c..bd1f502 100644 --- a/src/main/java/com/zilber/boot/intelligencesite/service/impl/IProductionPlanServiceImpl.java +++ b/src/main/java/com/zilber/boot/intelligencesite/service/impl/IProductionPlanServiceImpl.java @@ -43,63 +43,63 @@ public class IProductionPlanServiceImpl extends ServiceImpl queryList(IProductionPlan iProductionPlan) { return iProductionPlanMapper.queryList(iProductionPlan); } @Override - public Map statistics() { + public List> statistics() { List recentWeekDates = getRecentWeekDates(); - List namelist=new ArrayList<>(); - List planlist=new ArrayList<>(); - List actuallist=new ArrayList<>(); - for(int i=0;i iProductionPlans = iProductionPlanMapper.statistics(recentWeekDates.get(i)); - if(iProductionPlans.size()==0){ - planlist.add(new BigDecimal(0)); - actuallist.add(Long.valueOf(0)); - } - + List> res = new ArrayList<>(); + List iProductionPlans = iProductionPlanMapper.statistics(); + if (iProductionPlans.size() > 0) { for (IProductionPlan iProductionPlan : iProductionPlans) { - //获取每个计划时间差(结束时间-开始时间) - //long datePoorByDay = DateUtils.getDatePoorByDay(iProductionPlan.getEndTime(), iProductionPlan.getStartTime()); - //获取每个计划每天应完成的百分比 - BigDecimal daypercent = new BigDecimal(1).divide(new BigDecimal(iProductionPlan.getDuration()),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); - //获取当前日期,减去开始日期,乘以每个计划每天应完成的百分比,算出截止今天应该完成的百分比 - BigDecimal currentpercent = BigDecimal.valueOf(DateUtils.getDatePoorByDay(new Date(), iProductionPlan.getStartTime())).multiply(daypercent); - if (DateUtils.getDatePoorByDay(new Date(), iProductionPlan.getEndTime()) > 0) { - currentpercent = BigDecimal.valueOf(100); + for (int i = 0; i < recentWeekDates.size(); i++) { + IProductionPlan iP = iProductionPlanMapper.statisticsByDateAndName(iProductionPlan.getId(),recentWeekDates.get(i)); + Map map = new HashMap(); + if(ObjectUtils.isEmpty(iP)){ + map.put("name", iProductionPlan.getPlanName()); + map.put("plan", 0); + map.put("date", recentWeekDates.get(i)); + map.put("sj", 0); + res.add(map); + }else{ + //获取每个计划时间差(结束时间-开始时间) + //long datePoorByDay = DateUtils.getDatePoorByDay(iProductionPlan.getEndTime(), iProductionPlan.getStartTime()); + //获取每个计划每天应完成的百分比 + BigDecimal daypercent = new BigDecimal(1).divide(new BigDecimal(iProductionPlan.getDuration()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); + //获取当前日期,减去开始日期,乘以每个计划每天应完成的百分比,算出截止今天应该完成的百分比 + BigDecimal currentpercent = BigDecimal.valueOf(DateUtils.getDatePoorByDay(new Date(), iProductionPlan.getStartTime())).multiply(daypercent); + if (DateUtils.getDatePoorByDay(new Date(), iProductionPlan.getEndTime()) > 0) { + currentpercent = BigDecimal.valueOf(100); + } + + map.put("name", iProductionPlan.getPlanName()); + map.put("plan", currentpercent); + map.put("date", recentWeekDates.get(i)); + //查询计划实际填报情况 + List progresseslist = iProgressMapper.queryList(new IProgress().setPlanId(iProductionPlan.getId())); + long total = progresseslist.stream().mapToLong(IProgress::getDayProgress).sum(); + map.put("total", total); + res.add(map); + } } - planlist.add(currentpercent); - namelist.add(iProductionPlan.getPlanName()); - //查询计划实际填报情况 - List progresseslist = iProgressMapper.queryList(new IProgress().setPlanId(iProductionPlan.getId())); - long total = progresseslist.stream().mapToLong(IProgress::getDayProgress).sum(); - actuallist.add(total); } } - - - Map result = new HashMap<>(); - result.put("namelist",namelist); - result.put("datelist",recentWeekDates); - result.put("planlist",planlist); - result.put("actuallist",actuallist); - return result; + return res; } @Override public List querywarn(Integer day) { List iProductionPlans = iProductionPlanMapper.querywarn(); - List newiProductionPlans=new ArrayList<>(); + List newiProductionPlans = new ArrayList<>(); for (IProductionPlan iProductionPlan : iProductionPlans) { if (DateUtils.getDatePoorByDay(new Date(), iProductionPlan.getEndTime()) > day) { newiProductionPlans.add(iProductionPlan); - IWarn i=iWarnMapper.selectByPlanId(iProductionPlan.getId()); - if(ObjectUtils.isEmpty(i)){ - IWarn warn=new IWarn(); + IWarn i = iWarnMapper.selectByPlanId(iProductionPlan.getId()); + if (ObjectUtils.isEmpty(i)) { + IWarn warn = new IWarn(); warn.setPlanId(iProductionPlan.getId()); warn.setPlanName(iProductionPlan.getPlanName()); warn.setCreateTime(new Date()); @@ -112,36 +112,37 @@ public class IProductionPlanServiceImpl extends ServiceImpl dataOverview() { - int total=iProductionPlanMapper.queryTotal();//总工期 - int sg=iManpowerMapper.querySg();//施工人员 - int gl=iProductionPlanMapper.queryGl();//管理人员 - List ysg=iProgressMapper.queryYsg(); //已施工 + int total = iProductionPlanMapper.queryTotal();//总工期 + int sg = iManpowerMapper.querySg();//施工人员 + int gl = iProductionPlanMapper.queryGl();//管理人员 + List ysg = iProgressMapper.queryYsg(); //已施工 //int gcjd=iProductionPlanMapper.queryGcjd();//工程进度 - Map map=new HashMap(); - map.put("list",total);//总工期 - map.put("sg",sg);//施工人员 - map.put("gl",gl);//管理人员 - map.put("ysg",ysg.size());// //已施工 + Map map = new HashMap(); + map.put("list", total);//总工期 + map.put("sg", sg);//施工人员 + map.put("gl", gl);//管理人员 + map.put("ysg", ysg.size());// //已施工 //查询一级计划 - double day=0; - int totalday=0;List plan = iProductionPlanMapper.bigscreenProgress(); - for(int i=0;i plan = iProductionPlanMapper.bigscreenProgress(); + for (int i = 0; i < plan.size(); i++) { + if (null != plan.get(i).getAccumulativeProgress()) { + day += plan.get(i).getDuration() * plan.get(i).getAccumulativeProgress(); + } else { + day += 0; } - totalday+=plan.get(i).getDuration(); + totalday += plan.get(i).getDuration(); } - map.put("gcjd",day/totalday);// //已施工 + map.put("gcjd", day / totalday);// //已施工 return AjaxResult.success(map); } @Override public List bigscreenProgress() { - return iProductionPlanMapper.bigscreenProgress(); + return iProductionPlanMapper.bigscreenProgress(); } //获取最近一周时间 diff --git a/src/main/resources/mappers/IProductionPlanMapper.xml b/src/main/resources/mappers/IProductionPlanMapper.xml index f3209d6..0943728 100644 --- a/src/main/resources/mappers/IProductionPlanMapper.xml +++ b/src/main/resources/mappers/IProductionPlanMapper.xml @@ -88,8 +88,12 @@ FROM i_production_plan ipn left join i_progress ip on ipn.id=ip.plan_id where ipn.parent_id =0 +