Browse Source

派工单 报表

chenc 4 years ago
parent
commit
150d77949d

+ 26 - 4
src/main/java/org/jeecg/modules/fbsAbnormalWorkingHours/service/impl/FbsAbnormalWorkingHoursServiceImpl.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.fbsAbnormalWorkingHours.service.impl;
 
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHours;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHours;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHoursDescribe;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHoursDescribe;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHoursType;
 import org.jeecg.modules.fbsAbnormalWorkingHours.entity.FbsAbnormalWorkingHoursType;
@@ -145,14 +146,32 @@ public class FbsAbnormalWorkingHoursServiceImpl extends ServiceImpl<FbsAbnormalW
     public FbsAbnormalWorkingHours getAbnormalWorkingHoursReport() {
     public FbsAbnormalWorkingHours getAbnormalWorkingHoursReport() {
         FbsAbnormalWorkingHours fbsAbnormalWorkingHoursResult=new FbsAbnormalWorkingHours();
         FbsAbnormalWorkingHours fbsAbnormalWorkingHoursResult=new FbsAbnormalWorkingHours();
         //获取开始时间结束时间 当前日期前15天时间
         //获取开始时间结束时间 当前日期前15天时间
+        Calendar cale = Calendar.getInstance();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String firstday, lastday;
+        // 获取前月的第一天
+        cale = Calendar.getInstance();
+        cale.add(Calendar.MONTH, 0);
+        cale.set(Calendar.DAY_OF_MONTH, 1);
+        firstday = format.format(cale.getTime());
+        // 获取前月的最后一天
+        cale = Calendar.getInstance();
+        cale.add(Calendar.MONTH, 1);
+        cale.set(Calendar.DAY_OF_MONTH, 0);
+        lastday = format.format(cale.getTime());
         SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
-        String startTime = fmt.format(new Date().getTime()-14*24*60*60*1000);
-        String endTime = fmt.format(new Date());
+//        String startTime = fmt.format(new Date().getTime()-14*24*60*60*1000);
+//        String endTime = fmt.format(new Date());
+        String startTime = firstday;
+        String endTime = lastday;
         //两个时间之间的所有日期
         //两个时间之间的所有日期
         List<Date> dateList=startDateAndEndDate(startTime,endTime);
         List<Date> dateList=startDateAndEndDate(startTime,endTime);
         //查询全部异常工时
         //查询全部异常工时
-        LambdaQueryWrapper<FbsAbnormalWorkingHours> fbsAbnormalWorkingHoursLambdaQueryWrapper=new LambdaQueryWrapper<>();
-        fbsAbnormalWorkingHoursLambdaQueryWrapper.eq(FbsAbnormalWorkingHours::getDelFlag,"0");
+        QueryWrapper<FbsAbnormalWorkingHours> fbsAbnormalWorkingHoursLambdaQueryWrapper=new QueryWrapper<>();
+        fbsAbnormalWorkingHoursLambdaQueryWrapper.lambda().eq(FbsAbnormalWorkingHours::getDelFlag,"0");
+        SimpleDateFormat fmts = new SimpleDateFormat("yyyy-MM");
+        String now=fmts.format(new Date());
+        fbsAbnormalWorkingHoursLambdaQueryWrapper.eq("DATE_FORMAT(date,'%Y-%m')",now);
         List<FbsAbnormalWorkingHours> fbsAbnormalWorkingHoursList=iFbsAbnormalWorkingHoursService.list(fbsAbnormalWorkingHoursLambdaQueryWrapper);
         List<FbsAbnormalWorkingHours> fbsAbnormalWorkingHoursList=iFbsAbnormalWorkingHoursService.list(fbsAbnormalWorkingHoursLambdaQueryWrapper);
         //获取其全部主表id
         //获取其全部主表id
         List<String> hourIdList=new ArrayList<>();
         List<String> hourIdList=new ArrayList<>();
@@ -164,6 +183,9 @@ public class FbsAbnormalWorkingHoursServiceImpl extends ServiceImpl<FbsAbnormalW
         //根据主表查询异常描述子表
         //根据主表查询异常描述子表
         LambdaQueryWrapper<FbsAbnormalWorkingHoursDescribe> fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper=new LambdaQueryWrapper<>();
         LambdaQueryWrapper<FbsAbnormalWorkingHoursDescribe> fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper=new LambdaQueryWrapper<>();
         fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper.eq(FbsAbnormalWorkingHoursDescribe::getDelFlag,"0");
         fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper.eq(FbsAbnormalWorkingHoursDescribe::getDelFlag,"0");
+        if(hourIdList.size()<=0){
+            hourIdList=null;
+        }
         fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper.in(FbsAbnormalWorkingHoursDescribe::getAbnormalWorkingHoursId,hourIdList);
         fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper.in(FbsAbnormalWorkingHoursDescribe::getAbnormalWorkingHoursId,hourIdList);
         List<FbsAbnormalWorkingHoursDescribe> fbsAbnormalWorkingHoursDescribeList=iFbsAbnormalWorkingHoursDescribeService.list(fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper);
         List<FbsAbnormalWorkingHoursDescribe> fbsAbnormalWorkingHoursDescribeList=iFbsAbnormalWorkingHoursDescribeService.list(fbsAbnormalWorkingHoursDescribeLambdaQueryWrapper);
         getDescribeList(fbsAbnormalWorkingHoursList,fbsAbnormalWorkingHoursDescribeList);
         getDescribeList(fbsAbnormalWorkingHoursList,fbsAbnormalWorkingHoursDescribeList);

+ 7 - 0
src/main/java/org/jeecg/modules/fbsWorkshopDispatchList/entity/FbsWorkshopDispatchList.java

@@ -168,6 +168,13 @@ public class FbsWorkshopDispatchList implements Serializable {
 	@DateTimeFormat(pattern="yyyy-MM-dd")
 	@DateTimeFormat(pattern="yyyy-MM-dd")
 	private Date endDate;
 	private Date endDate;
 
 
+	//实际完工时间
+	@TableField(exist = false)
+	@Excel(name = "日期", width = 20, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	private Date finalTime;
+
 	//单日完成工时
 	//单日完成工时
 	private String  manHoursCompleted;
 	private String  manHoursCompleted;
 
 

+ 32 - 3
src/main/java/org/jeecg/modules/fbsWorkshopDispatchList/mapper/xml/FbsWorkshopDispatchListMapper.xml

@@ -39,6 +39,8 @@
         FROM
         FROM
             fbs_workshop_dispatch_list
             fbs_workshop_dispatch_list
             where del_flag='0'
             where del_flag='0'
+            and DATE_FORMAT(now( ),'%Y-%m') <![CDATA[ >= ]]> DATE_FORMAT(planned_start_time,'%Y-%m')
+            and DATE_FORMAT(now( ),'%Y-%m') <![CDATA[ <= ]]> DATE_FORMAT(planned_end_time,'%Y-%m')
         GROUP BY
         GROUP BY
             production_order_number_id,product_id
             production_order_number_id,product_id
         ORDER BY
         ORDER BY
@@ -46,7 +48,7 @@
     </select>
     </select>
 
 
     <select id="getDispatchClose" resultType="org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList">
     <select id="getDispatchClose" resultType="org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList">
-        SELECT
+       <!-- SELECT
             fwdl.* ,fws.qualified_number,fws.end_date,convert(fwdl.man_hours_completed/fwdl.standard_working_hours,decimal(15,2))*100 as productionEfficiency
             fwdl.* ,fws.qualified_number,fws.end_date,convert(fwdl.man_hours_completed/fwdl.standard_working_hours,decimal(15,2))*100 as productionEfficiency
             ,convert(fws.qualified_number/fwdl.number_of_tasks,decimal(15,2))*100 as achievementRate
             ,convert(fws.qualified_number/fwdl.number_of_tasks,decimal(15,2))*100 as achievementRate
         FROM
         FROM
@@ -59,7 +61,31 @@
             </if>
             </if>
             <if test="endDate!=null">
             <if test="endDate!=null">
                 <![CDATA[  and DATE_FORMAT(fws.end_date, '%Y-%m-%d') <= #{endDate} ]]>
                 <![CDATA[  and DATE_FORMAT(fws.end_date, '%Y-%m-%d') <= #{endDate} ]]>
-            </if>
+            </if>-->
+        SELECT
+        fwdl.production_order_number_id,
+        fwdl.product_id,
+        sum(fws.qualified_number) qualified_number,
+        DATE_FORMAT(fws.final_time,'%Y-%m-%d') final_time,
+        CONVERT ( sum(fwdl.man_hours_completed) / sum(fwdl.standard_working_hours), DECIMAL ( 15, 2 ) ) * 100 AS productionEfficiency,
+        CONVERT ( sum(fws.qualified_number) / sum(fwdl.number_of_tasks), DECIMAL ( 15, 2 ) ) * 100 AS achievementRate
+        FROM
+        fbs_workshop_dispatch_list fwdl
+        LEFT JOIN fbs_working_statistics fws ON fwdl.id = fws.pk_workshop_dispatch_list
+        WHERE
+        fwdl.del_flag = '0'
+        AND fws.del_flag = '0'
+        and fws.final_state in('2','3')
+        <if test="startDate!=null">
+            <![CDATA[   and DATE_FORMAT(fws.final_time, '%Y-%m-%d')>=  #{startDate}]]>
+        </if>
+        <if test="endDate!=null">
+            <![CDATA[  and DATE_FORMAT(fws.final_time, '%Y-%m-%d') <= #{endDate} ]]>
+        </if>
+        GROUP BY
+        fwdl.production_order_number_id,
+        fwdl.product_id,
+        DATE_FORMAT(fws.final_time,'%Y-%m-%d')
     </select>
     </select>
 
 
     <select id="getProductHoursMonthReport" resultType="org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList">
     <select id="getProductHoursMonthReport" resultType="org.jeecg.modules.fbsWorkshopDispatchList.entity.FbsWorkshopDispatchList">
@@ -188,7 +214,10 @@
             ( count( fws.pk_workshop_dispatch_list ) / count( fwdl.id ), DECIMAL ( 15, 2 ) ) * 100
             ( count( fws.pk_workshop_dispatch_list ) / count( fwdl.id ), DECIMAL ( 15, 2 ) ) * 100
         FROM
         FROM
             fbs_workshop_dispatch_list fwdl
             fbs_workshop_dispatch_list fwdl
-            LEFT JOIN ( SELECT pk_workshop_dispatch_list FROM fbs_working_statistics WHERE del_flag = '0' GROUP BY pk_workshop_dispatch_list ) fws ON fwdl.id = fws.pk_workshop_dispatch_list
+            LEFT JOIN ( SELECT pk_workshop_dispatch_list FROM fbs_working_statistics WHERE del_flag = '0'
+            and DATE_FORMAT(now( ),#{dateString}) <![CDATA[ >= ]]> DATE_FORMAT(start_date,#{dateString})
+            and DATE_FORMAT(now( ),#{dateString}) <![CDATA[ <= ]]> DATE_FORMAT(end_date,#{dateString})
+             GROUP BY pk_workshop_dispatch_list ) fws ON fwdl.id = fws.pk_workshop_dispatch_list
         WHERE
         WHERE
             fwdl.del_flag = '0'
             fwdl.del_flag = '0'
             and DATE_FORMAT(now( ),#{dateString}) <![CDATA[ >= ]]> DATE_FORMAT(fwdl.planned_start_time,#{dateString})
             and DATE_FORMAT(now( ),#{dateString}) <![CDATA[ >= ]]> DATE_FORMAT(fwdl.planned_start_time,#{dateString})

+ 21 - 5
src/main/java/org/jeecg/modules/fbsWorkshopDispatchList/service/impl/FbsWorkshopDispatchListServiceImpl.java

@@ -56,9 +56,25 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
 //        LambdaQueryWrapper<FbsWorkshopDispatchList> lambdaQueryWrapper=new LambdaQueryWrapper<>();
 //        LambdaQueryWrapper<FbsWorkshopDispatchList> lambdaQueryWrapper=new LambdaQueryWrapper<>();
 //        lambdaQueryWrapper.eq(FbsWorkshopDispatchList::getDelFlag,"0");
 //        lambdaQueryWrapper.eq(FbsWorkshopDispatchList::getDelFlag,"0");
 //        List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=iFbsWorkshopDispatchListService.list(lambdaQueryWrapper);
 //        List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=iFbsWorkshopDispatchListService.list(lambdaQueryWrapper);
+        // 获取当月第一天和最后一天
+        Calendar cale = Calendar.getInstance();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String firstday, lastday;
+        // 获取前月的第一天
+        cale = Calendar.getInstance();
+        cale.add(Calendar.MONTH, 0);
+        cale.set(Calendar.DAY_OF_MONTH, 1);
+        firstday = format.format(cale.getTime());
+        // 获取前月的最后一天
+        cale = Calendar.getInstance();
+        cale.add(Calendar.MONTH, 1);
+        cale.set(Calendar.DAY_OF_MONTH, 0);
+        lastday = format.format(cale.getTime());
         //获取开始时间结束时间 当前日期前15天时间
         //获取开始时间结束时间 当前日期前15天时间
-        String startTime = fmt.format(new Date().getTime()-14*24*60*60*1000);
-        String endTime = fmt.format(new Date());
+//        String startTime = fmt.format(new Date().getTime()-14*24*60*60*1000);
+//        String endTime = fmt.format(new Date());
+        String startTime = firstday;
+        String endTime = lastday;
         List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=fbsWorkshopDispatchListMapper.getDispatchClose(startTime,endTime);
         List<FbsWorkshopDispatchList> fbsWorkshopDispatchListList=fbsWorkshopDispatchListMapper.getDispatchClose(startTime,endTime);
         //两个时间之间的所有日期
         //两个时间之间的所有日期
         List<Date> dateList=startDateAndEndDate(startTime,endTime);
         List<Date> dateList=startDateAndEndDate(startTime,endTime);
@@ -74,7 +90,7 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
                     for(FbsWorkshopDispatchList dispatchList:fbsWorkshopDispatchListList){
                     for(FbsWorkshopDispatchList dispatchList:fbsWorkshopDispatchListList){
                         Integer orderIdSum=dispatchListSum.getProductionOrderNumberId();//求和的派工生产单号
                         Integer orderIdSum=dispatchListSum.getProductionOrderNumberId();//求和的派工生产单号
                         Integer orderId=dispatchList.getProductionOrderNumberId();//全部派工生产单号
                         Integer orderId=dispatchList.getProductionOrderNumberId();//全部派工生产单号
-                        String dispatchDate=fmt.format(dispatchList.getEndDate());//完工时间
+                        String dispatchDate=fmt.format(dispatchList.getFinalTime());//完工时间
                         String proSum=dispatchListSum.getProductId();//求和中的产品id
                         String proSum=dispatchListSum.getProductId();//求和中的产品id
                         String pro=dispatchList.getProductId();//全部中的产品id
                         String pro=dispatchList.getProductId();//全部中的产品id
                         //找到对应当天的派工单则添加
                         //找到对应当天的派工单则添加
@@ -87,7 +103,7 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
                     //没有则添加空的派工单
                     //没有则添加空的派工单
                     if(isorder==false){
                     if(isorder==false){
                         FbsWorkshopDispatchList fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
                         FbsWorkshopDispatchList fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
-                        fbsWorkshopDispatchList.setEndDate(date);
+                        fbsWorkshopDispatchList.setFinalTime(date);
                         dispatchListAdd.add(fbsWorkshopDispatchList);
                         dispatchListAdd.add(fbsWorkshopDispatchList);
                     }
                     }
                 }
                 }
@@ -207,7 +223,7 @@ public class FbsWorkshopDispatchListServiceImpl extends ServiceImpl<FbsWorkshopD
             for(FbsWorkshopDispatchList workshopDispatchList:fbsWorkshopDispatchListList){
             for(FbsWorkshopDispatchList workshopDispatchList:fbsWorkshopDispatchListList){
                 if(workshopDispatchList.getFbsWorkshopDispatchListList()!=null){
                 if(workshopDispatchList.getFbsWorkshopDispatchListList()!=null){
                     for(FbsWorkshopDispatchList workshopDispatchListC:workshopDispatchList.getFbsWorkshopDispatchListList()){
                     for(FbsWorkshopDispatchList workshopDispatchListC:workshopDispatchList.getFbsWorkshopDispatchListList()){
-                        String endDate=fmt.format(workshopDispatchListC.getEndDate());
+                        String endDate=fmt.format(workshopDispatchListC.getFinalTime());
                         //找到对应时间的数据
                         //找到对应时间的数据
                         if(dateN.equals(endDate)){//累加
                         if(dateN.equals(endDate)){//累加
                             if(workshopDispatchListC.getNumberOfTasks()!=null){
                             if(workshopDispatchListC.getNumberOfTasks()!=null){