瀏覽代碼

工时定额报表,其他工时报表

lxb 1 年之前
父節點
當前提交
d30634013e

+ 13 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/statisticalAnalysis/ProductLinePerformanceService.java

@@ -107,4 +107,17 @@ public interface ProductLinePerformanceService extends SuperCacheService<TaskNod
     IPage<DeviceResourceDetailVo> deviceResourceDetail(IPage page, Map<String, Object> params);
 
     Map<String,List<String>> resourceRate(Map<String, Object> params);
+
+
+    /**
+     * 工时定额报表
+     * @param page
+     * @param params
+     * @return
+     */
+    IPage<DeviceResourceDetailVo> workHourReport(IPage page, Map<String, Object> params);
+
+    IPage<DeviceResourceDetailVo> otherHourReport(IPage page, Map<String, Object> params);
+
+
 }

+ 4 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/statisticalAnalysis/dao/ProductLinePerformanceMapper.java

@@ -73,4 +73,8 @@ public interface ProductLinePerformanceMapper extends SuperMapper<TaskNode> {
     IPage<DeviceResourceDetailVo> deviceResourceDetail(IPage page,@Param("params") Map<String, Object> params);
 
     List<DeviceResourceDetailVo> resourceRate(@Param("params") Map<String, Object> params);
+
+    IPage<DeviceResourceDetailVo> workHourReport(IPage page,@Param("params") Map<String, Object> params);
+
+    IPage<DeviceResourceDetailVo> otherHourReport(IPage page,@Param("params") Map<String, Object> params);
 }

+ 56 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/statisticalAnalysis/impl/ProductLinePerformanceServiceImpl.java

@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUnit;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.zuihou.base.service.SuperCacheServiceImpl;
@@ -441,4 +442,59 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
         return map;
     }
 
+    @Override
+    public IPage<DeviceResourceDetailVo> workHourReport(IPage page, Map<String, Object> params) {
+
+        if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
+                && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
+            //默认当天
+            params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
+        }
+
+        IPage<DeviceResourceDetailVo> deviceResourceDetailVoIPage = baseMapper.workHourReport(page, params);
+
+        if(deviceResourceDetailVoIPage !=null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())){
+            for(DeviceResourceDetailVo deviceResourceDetailVo:deviceResourceDetailVoIPage.getRecords()){
+                float actualWorkHour = 0;
+                if(deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null){
+                    actualWorkHour = 30;
+                }else {
+                    long between = cn.hutool.core.date.DateUtil.between(deviceResourceDetailVo.getStartTime(), deviceResourceDetailVo.getEndTime(), DateUnit.MINUTE);
+                    actualWorkHour = between;
+                }
+                float workHour = deviceResourceDetailVo.getWorkHour();
+                //额定工时 - 实际工时
+                float hour = workHour - actualWorkHour;
+
+                deviceResourceDetailVo.setActualWorkHour(actualWorkHour);
+                deviceResourceDetailVo.setHour(hour);
+            }
+        }
+        return deviceResourceDetailVoIPage;
+    }
+
+    @Override
+    public IPage<DeviceResourceDetailVo> otherHourReport(IPage page, Map<String, Object> params) {
+        if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
+                && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
+            //默认当天
+            params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
+        }
+
+        IPage<DeviceResourceDetailVo> deviceResourceDetailVoIPage = baseMapper.otherHourReport(page, params);
+
+        if(deviceResourceDetailVoIPage !=null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())){
+            for(DeviceResourceDetailVo deviceResourceDetailVo:deviceResourceDetailVoIPage.getRecords()){
+                float actualWorkHour = 0;
+                if(deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null){
+                    actualWorkHour = 5;
+                }else {
+                    long between = cn.hutool.core.date.DateUtil.between(deviceResourceDetailVo.getStartTime(), deviceResourceDetailVo.getEndTime(), DateUnit.MINUTE);
+                    actualWorkHour = between;
+                }
+                deviceResourceDetailVo.setActualWorkHour(actualWorkHour);
+            }
+        }
+        return deviceResourceDetailVoIPage;
+    }
 }

+ 95 - 0
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/statisticalAnalysis/ProductLinePerformanceMapper.xml

@@ -318,4 +318,99 @@
     where t.start_time is not null
     order by t.start_time ASC
     </select>
+
+
+    <select id="workHourReport" resultType="com.github.zuihou.tenant.vo.DeviceResourceDetailVo">
+        SELECT
+            c.order_no,
+            a.NAME AS zoneName,
+            itp.NAME AS resourceName,
+            ibb.name AS bomName,
+            c.procedure_no,
+            (select end_time from imcs_t_task_node ttn where ttn.task_id = c.id and ttn.node_name = '放本序设备' ) as start_time,
+            (select end_time from imcs_t_task_node ttn where ttn.task_id = c.id and ttn.node_name = '执行程序' ) as end_time,
+            (select rated_workHours from imcs_b_bom_procedure_version ibbv where ibbv.id = c.procedure_id) as workHour
+            FROM
+            zuihou_base_yj_0000.imcs_z_zone a,
+            zuihou_base_yj_0000.imcs_z_zone_productionresource b,
+            zuihou_base_yj_0000.imcs_tenant_productionresource itp,
+            zuihou_base_yj_0000.imcs_t_task c,
+            zuihou_base_yj_0000.imcs_b_bom ibb
+        WHERE
+            a.id = b.zone_id
+            AND b.resource_id = c.resource_id
+            AND b.resource_id = itp.id
+            AND c.bom_id = ibb.id
+            AND c.start_time IS NOT NULL
+            AND c.end_time IS NOT NULL
+            AND c.`status` = 3
+            AND c.procedure_no LIKE 'OP%0'
+        <if test="params.zoneId !=null and params.zoneId !=''">
+            AND a.id = #{params.zoneId}
+        </if>
+        <if test="params.resourceId !=null and params.resourceId !=''">
+            AND itp.id = #{params.resourceId}
+        </if>
+        <if test="params.startDate !=null and params.startDate !='' and params.endDate !=null and params.endDate !=''">
+            AND c.end_time BETWEEN #{params.startDate} and #{params.endDate}
+        </if>
+        <if test="params.month !=null and params.month !=''">
+            AND DATE_FORMAT(c.end_time, '%Y-%m') = #{params.month}
+        </if>
+        <if test="params.years !=null and params.years !=''">
+            AND DATE_FORMAT(c.end_time, '%Y') = #{params.years}
+        </if>
+        <if test="params.today !=null and params.today !=''">
+            AND DATE_FORMAT(c.end_time, '%Y-%m-%d') = #{params.today}
+        </if>
+        order by c.end_time asc
+    </select>
+
+    <select id="otherHourReport" resultType="com.github.zuihou.tenant.vo.DeviceResourceDetailVo">
+        SELECT
+            c.order_no,
+            a.NAME AS zoneName,
+            itp.NAME AS resourceName,
+            ibb.name AS bomName,
+            c.procedure_no,
+            ittn.start_time,
+            ittn.end_time
+            FROM
+            zuihou_base_yj_0000.imcs_z_zone a,
+            zuihou_base_yj_0000.imcs_z_zone_productionresource b,
+            zuihou_base_yj_0000.imcs_tenant_productionresource itp,
+            zuihou_base_yj_0000.imcs_t_task c,
+            zuihou_base_yj_0000.imcs_b_bom ibb,
+            zuihou_base_yj_0000.imcs_t_task_node ittn
+        WHERE
+            a.id = b.zone_id
+            AND b.resource_id = c.resource_id
+            AND b.resource_id = itp.id
+            AND c.bom_id = ibb.id
+            AND c.id = ittn.task_id
+            AND c.start_time IS NOT NULL
+            AND c.end_time IS NOT NULL
+            AND c.`status` = 3
+            AND c.procedure_no LIKE 'OP%0'
+            AND ittn.node_name = '放本序设备'
+        <if test="params.zoneId !=null and params.zoneId !=''">
+            AND a.id = #{params.zoneId}
+        </if>
+        <if test="params.resourceId !=null and params.resourceId !=''">
+            AND itp.id = #{params.resourceId}
+        </if>
+        <if test="params.startDate !=null and params.startDate !='' and params.endDate !=null and params.endDate !=''">
+            AND c.end_time BETWEEN #{params.startDate} and #{params.endDate}
+        </if>
+        <if test="params.month !=null and params.month !=''">
+            AND DATE_FORMAT(c.end_time, '%Y-%m') = #{params.month}
+        </if>
+        <if test="params.years !=null and params.years !=''">
+            AND DATE_FORMAT(c.end_time, '%Y') = #{params.years}
+        </if>
+        <if test="params.today !=null and params.today !=''">
+            AND DATE_FORMAT(c.end_time, '%Y-%m-%d') = #{params.today}
+        </if>
+        order by c.end_time asc
+    </select>
 </mapper>

+ 20 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/statisticalAnalysis/ProductLinePerformanceController.java

@@ -204,4 +204,24 @@ public class ProductLinePerformanceController extends SuperController<ProductLin
         Map<String, List<String>> map = baseService.resourceRate(params);
         return success(map);
     }
+
+    @ApiOperation(value = "工时定额报表", notes = "工时定额报表")
+    @PostMapping("/workHourReport/{page}/{limit}")
+    @SysLog("工时定额报表")
+    public R<IPage<DeviceResourceDetailVo>> workHourReport(@PathVariable Long page,
+                                                                 @PathVariable Long limit,
+                                                                 @RequestBody Map<String,Object> params) {
+        Page pageInfo = new Page<>(page,limit);
+        return success(baseService.workHourReport(pageInfo,params));
+    }
+
+    @ApiOperation(value = "其他工时报表", notes = "其他工时报表")
+    @PostMapping("/otherHourReport/{page}/{limit}")
+    @SysLog("其他工时报表")
+    public R<IPage<DeviceResourceDetailVo>> otherHourReport(@PathVariable Long page,
+                                                           @PathVariable Long limit,
+                                                           @RequestBody Map<String,Object> params) {
+        Page pageInfo = new Page<>(page,limit);
+        return success(baseService.otherHourReport(pageInfo,params));
+    }
 }

+ 13 - 0
imcs-admin-boot/imcs-tenant-entity/src/main/java/com/github/zuihou/tenant/vo/DeviceResourceDetailVo.java

@@ -2,6 +2,7 @@ package com.github.zuihou.tenant.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.util.Date;
@@ -37,4 +38,16 @@ public class DeviceResourceDetailVo {
 
     @ApiModelProperty(value = "结束小时")
     private String endHour;
+
+    @ApiModelProperty(value = "实际工时")
+    private float actualWorkHour;
+
+    @ApiModelProperty(value = "额定工时")
+    private float workHour;
+
+    @ApiModelProperty(value = "差值")
+    private float hour;
+
+    @ApiModelProperty(value = "报警时长")
+    private float alarmHour;
 }