Min vor 1 Jahr
Ursprung
Commit
9ce44952c8

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java

@@ -60,7 +60,7 @@ public class ExpenseSheetController {
     }
 
     @RequestMapping("/list")
-    public HttpRespMsg list(ExpenseSheet sheet,String startDate, String endDate, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
+    public HttpRespMsg list(ExpenseSheet sheet,Integer sendState,String startDate, String endDate, @RequestParam Integer pageIndex, @RequestParam Integer pageSize) {
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部报销单");

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -365,6 +365,9 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         if (sheet.getStatus() != null) {
             queryWrapper.eq("status", sheet.getStatus());
         }
+        if(sheet.getSendState()!=null){
+            queryWrapper.eq("send_state",sheet.getSendState());
+        }
 
         if (expenseAuditSetting == null || expenseAuditSetting.getAuditType() == 0) {
             if (!StringUtils.isEmpty(sheet.getOwnerId())) {

+ 30 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java

@@ -1528,6 +1528,26 @@ public class ReportController {
         return reportService.exportPersonWorkHoursWorkTime(deptId,userId,startDate,endDate);
     }
 
+    @RequestMapping("getProcedureRealTimeProgressList")
+    public HttpRespMsg getProcedureRealTimeProgressList(String deptId,String userId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.getProcedureRealTimeProgressList(deptId,userId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("exportProcedureRealTimeProgressList")
+    public HttpRespMsg exportProcedureRealTimeProgressList(String deptId,String userId,String startDate,String endDate){
+        return reportService.exportProcedureRealTimeProgressList(deptId,userId,startDate,endDate);
+    }
+
+    @RequestMapping("/workReportQuery")
+    public HttpRespMsg workReportQuery(Integer productId,String vehicleNum,String steelNum,Integer deptId,String userId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.workReportQuery(productId,vehicleNum,steelNum,deptId,userId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("/exportWorkReportQuery")
+    public HttpRespMsg exportWorkReportQuery(Integer productId,String vehicleNum,String steelNum,Integer deptId,String userId,String startDate,String endDate){
+        return reportService.exportWorkReportQuery(productId,vehicleNum,steelNum,deptId,userId,startDate,endDate);
+    }
+
     @RequestMapping("getPlanRealTimeProgressList")
     public HttpRespMsg getPlanRealTimeProgressList(String deptId,String userId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
         return reportService.getPlanRealTimeProgressList(deptId,userId,startDate,endDate,pageIndex,pageSize);
@@ -1538,5 +1558,15 @@ public class ReportController {
         return reportService.exportPlanRealTimeProgressList(deptId,userId,startDate,endDate);
     }
 
+    @RequestMapping("getDpetStatisticsProgressList")
+    public HttpRespMsg getDpetStatisticsProgressList(String deptId,String userId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.getDpetStatisticsProgressList(deptId,userId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("exportDpetStatisticsProgressList")
+    public HttpRespMsg exportDpetStatisticsProgressList(String deptId,String userId,String startDate,String endDate){
+        return reportService.exportDpetStatisticsProgressList(deptId,userId,startDate,endDate);
+    }
+
 }
 

+ 13 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -186,7 +186,19 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String, Object>> getPersonWorkHoursWagesDetail(String date, String userId, Integer companyId,String startDate,String endDate,Integer checkStatus,Integer detailStatus);
 
-    List<Map<String, Object>> getPlanRealTimeProgressList(Integer companyId,String deptId, String userId, String startDate, String endDate, Integer pageStart, Integer pageSize);
+    List<Map<String, Object>> getProcedureRealTimeProgressList(Integer companyId,String deptId, String userId, String startDate, String endDate, Integer pageStart, Integer pageSize);
+
+    Integer getProcedureRealTimeProgressCount(Integer companyId, String deptId, String userId, String startDate, String endDate);
+
+    List<Map<String, Object>> workReportQuery(Integer companyId,Integer productId, String vehicleNum,String steelNum, Integer deptId, String userId, String startDate, String endDate,Integer pageStart, Integer pageSize);
+
+    Integer selectCountForWorkQuery(Integer companyId, Integer productId, String vehicleNum, String steelNum, Integer deptId, String userId, String startDate, String endDate);
+
+    List<Map<String, Object>> getPlanRealTimeProgressList(Integer companyId, String deptId, String userId, String startDate, String endDate, Integer pageStart, Integer pageSize);
 
     Integer getPlanRealTimeProgressCount(Integer companyId, String deptId, String userId, String startDate, String endDate);
+
+    List<Map<String, Object>> getDpetStatisticsProgressList(Integer companyId, String deptId, String userId, String startDate, String endDate, Integer pageStart, Integer pageSize);
+
+    Integer getDpetStatisticsProgressCount(Integer companyId, String deptId, String userId, String startDate, String endDate);
 }

+ 12 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java

@@ -123,7 +123,19 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg exportPersonWorkHoursWorkTime(String deptId, String userId, String startDate, String endDate);
 
+    HttpRespMsg getProcedureRealTimeProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportProcedureRealTimeProgressList(String deptId, String userId, String startDate, String endDate);
+
+    HttpRespMsg workReportQuery(Integer productId, String vehicleNum, String steelNum, Integer deptId, String userId, String startDate, String endDate,Integer pageIndex,Integer pageSize);
+
+    HttpRespMsg exportWorkReportQuery(Integer productId, String vehicleNum, String steelNum, Integer deptId, String userId, String startDate, String endDate);
+
     HttpRespMsg getPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
 
     HttpRespMsg exportPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate);
+
+    HttpRespMsg getDpetStatisticsProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportDpetStatisticsProgressList(String deptId, String userId, String startDate, String endDate);
 }

+ 176 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -21,7 +21,9 @@ import org.springframework.web.client.RestTemplate;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.NumberFormat;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
@@ -4419,7 +4421,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg getPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
+    public HttpRespMsg getProcedureRealTimeProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
         HttpRespMsg httpRespMsg=new HttpRespMsg();
         Integer pageStart = null;
         if (pageIndex!=null){
@@ -4427,8 +4429,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         }
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         HashMap map=new HashMap();
-        List<Map<String, Object>> planRealTimeProgressList = reportMapper.getPlanRealTimeProgressList(companyId, deptId, userId, startDate, endDate, pageStart, pageSize);
-        Integer total=reportMapper.getPlanRealTimeProgressCount(companyId, deptId, userId, startDate, endDate);
+        List<Map<String, Object>> planRealTimeProgressList = reportMapper.getProcedureRealTimeProgressList(companyId, deptId, userId, startDate, endDate, pageStart, pageSize);
+        Integer total=reportMapper.getProcedureRealTimeProgressCount(companyId, deptId, userId, startDate, endDate);
         map.put("records",planRealTimeProgressList);
         map.put("total",total);
         httpRespMsg.setData(map);
@@ -4436,9 +4438,9 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg exportPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate) {
+    public HttpRespMsg exportProcedureRealTimeProgressList(String deptId, String userId, String startDate, String endDate) {
         HttpRespMsg msg=new HttpRespMsg();
-        HttpRespMsg respMsg = getPlanRealTimeProgressList(deptId, userId, startDate, endDate, null, null);
+        HttpRespMsg respMsg = getProcedureRealTimeProgressList(deptId, userId, startDate, endDate, null, null);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         HashMap resultMap= (HashMap) respMsg.data;
         List<Map<String, Object>> mapList= (List<Map<String, Object>>) resultMap.get("records");
@@ -4462,7 +4464,175 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             dataList.add(itemMap);
         }
         Company company = companyMapper.selectById(companyId);
-        String fileName=("计划实际工时表_")+company.getCompanyName()+System.currentTimeMillis();
+        String fileName=("工序实时进度表_")+company.getCompanyName()+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
+        msg.setData(resp);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg workReportQuery(Integer productId, String vehicleNum, String steelNum, Integer deptId, String userId, String startDate, String endDate,Integer pageIndex,Integer pageSize) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer pageStart = null;
+        if (pageIndex!=null){
+            pageStart = (pageIndex -1) * pageSize;
+        }
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        Map map=new HashMap();
+        List<Map<String,Object>> mapList=reportMapper.workReportQuery(companyId,productId,vehicleNum,steelNum,deptId,userId,startDate,endDate,pageStart,pageSize);
+        Integer total = reportMapper.selectCountForWorkQuery(companyId, productId, vehicleNum, steelNum, deptId, userId, startDate, endDate);
+        map.put("records",mapList);
+        map.put("total",total);
+        msg.setData(map);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg exportWorkReportQuery(Integer productId, String vehicleNum, String steelNum, Integer deptId, String userId, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        HttpRespMsg respMsg = workReportQuery(productId, vehicleNum, steelNum, deptId, userId, startDate,endDate,null,null);
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HashMap resultMap= (HashMap) respMsg.data;
+        List<Map<String, Object>> mapList= (List<Map<String, Object>>) resultMap.get("records");
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("排除工单号");
+        titleList.add("产品名称");
+        titleList.add("工长");
+        titleList.add("开工时间");
+        titleList.add("完工时间");
+        titleList.add("工长");
+        titleList.add("组员");
+        titleList.add("报工时间");
+        titleList.add("质检人");
+        dataList.add(titleList);
+        for (Map<String, Object> map : mapList) {
+            List<String> itemMap=new ArrayList<>();
+            itemMap.add(String.valueOf(map.get("productSchedulingNum")==null?"":map.get("productSchedulingNum")));
+            itemMap.add(String.valueOf(map.get("productName")==null?"":map.get("productName")));
+            itemMap.add(String.valueOf(map.get("foremanName")==null?"":map.get("foremanName")));
+            itemMap.add(String.valueOf(map.get("startDate")==null?"":map.get("startDate")));
+            itemMap.add(String.valueOf(map.get("endDate")==null?"":map.get("endDate")));
+            itemMap.add(String.valueOf(map.get("procedureName")==null?"":map.get("procedureName")));
+            itemMap.add(String.valueOf(map.get("creatorName")==null?"":map.get("creatorName")));
+            itemMap.add(String.valueOf(map.get("createDate")==null?"":map.get("createDate")));
+            itemMap.add(String.valueOf(map.get("checkName")==null?"":map.get("checkName")));
+            dataList.add(itemMap);
+        }
+        Company company = companyMapper.selectById(companyId);
+        String fileName=("报工详情表_")+company.getCompanyName()+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
+        msg.setData(resp);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        NumberFormat format = NumberFormat.getPercentInstance();
+        format.setMinimumFractionDigits(2);
+        Integer pageStart = null;
+        if (pageIndex!=null){
+            pageStart = (pageIndex -1) * pageSize;
+        }
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HashMap map=new HashMap();
+        List<Map<String, Object>> planRealTimeProgressList = reportMapper.getPlanRealTimeProgressList(companyId, deptId, userId, startDate, endDate, pageStart, pageSize);
+        planRealTimeProgressList.forEach(pt->{
+            BigDecimal planWorkTime = new BigDecimal(pt.get("planWorkTime") == null ? 0 : Double.valueOf(String.valueOf(pt.get("planWorkTime"))));
+            BigDecimal nowWorkTime = new BigDecimal(pt.get("nowWorkTime") == null ? 0 : Double.valueOf(String.valueOf(pt.get("nowWorkTime"))));
+            if(nowWorkTime.compareTo(BigDecimal.ZERO)!=0){
+                BigDecimal divide = nowWorkTime.divide(planWorkTime, 4, RoundingMode.HALF_UP);
+                pt.put("progress",format.format(divide.doubleValue()));
+            }
+        });
+        Integer total=reportMapper.getPlanRealTimeProgressCount(companyId, deptId, userId, startDate, endDate);
+        map.put("records",planRealTimeProgressList);
+        map.put("total",total);
+        httpRespMsg.setData(map);
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg exportPlanRealTimeProgressList(String deptId, String userId, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        HttpRespMsg respMsg = getPlanRealTimeProgressList(deptId, userId, startDate, endDate, null, null);
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HashMap resultMap= (HashMap) respMsg.data;
+        List<Map<String, Object>> mapList= (List<Map<String, Object>>) resultMap.get("records");
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("排产计划");
+        titleList.add("工长");
+        titleList.add("计划工时");
+        titleList.add("当前工时");
+        titleList.add("进度");
+        dataList.add(titleList);
+        for (Map<String, Object> map : mapList) {
+            List<String> itemMap=new ArrayList<>();
+            itemMap.add(String.valueOf(map.get("taskName")==null?"":map.get("taskName")));
+            itemMap.add(String.valueOf(map.get("userName")==null?"":map.get("userName")));
+            itemMap.add(String.valueOf(map.get("planWorkTime")==null?"":map.get("planWorkTime")+"分钟 "+map.get("planCost")+"元"));
+            itemMap.add(String.valueOf(map.get("nowWorkTime")==null?"":map.get("nowWorkTime")+"分钟 "+map.get("nowCost")+"元"));
+            itemMap.add(String.valueOf(map.get("progress")==null?0:map.get("progress")));
+            dataList.add(itemMap);
+        }
+        Company company = companyMapper.selectById(companyId);
+        String fileName=("计划实时进度表_")+company.getCompanyName()+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
+        msg.setData(resp);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getDpetStatisticsProgressList(String deptId, String userId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        NumberFormat format = NumberFormat.getPercentInstance();
+        format.setMinimumFractionDigits(2);
+        Integer pageStart = null;
+        if (pageIndex!=null){
+            pageStart = (pageIndex -1) * pageSize;
+        }
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HashMap map=new HashMap();
+        List<Map<String, Object>> dpetStatisticsProgressList = reportMapper.getDpetStatisticsProgressList(companyId, deptId, userId, startDate, endDate, pageStart, pageSize);
+        dpetStatisticsProgressList.forEach(pt->{
+            BigDecimal planWorkTime = new BigDecimal(pt.get("planWorkTime") == null ? 0 : Double.valueOf(String.valueOf(pt.get("planWorkTime"))));
+            BigDecimal nowWorkTime = new BigDecimal(pt.get("nowWorkTime") == null ? 0 : Double.valueOf(String.valueOf(pt.get("nowWorkTime"))));
+            if(nowWorkTime.compareTo(BigDecimal.ZERO)!=0){
+                BigDecimal divide = nowWorkTime.divide(planWorkTime, 4, RoundingMode.HALF_UP);
+                pt.put("progress",format.format(divide.doubleValue()));
+            }
+        });
+        Integer total=reportMapper.getDpetStatisticsProgressCount(companyId, deptId, userId, startDate, endDate);
+        map.put("records",dpetStatisticsProgressList);
+        map.put("total",total);
+        httpRespMsg.setData(map);
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg exportDpetStatisticsProgressList(String deptId, String userId, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        HttpRespMsg respMsg = getDpetStatisticsProgressList(deptId, userId, startDate, endDate, null, null);
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HashMap resultMap= (HashMap) respMsg.data;
+        List<Map<String, Object>> mapList= (List<Map<String, Object>>) resultMap.get("records");
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("部门名称");
+        titleList.add("计划进度");
+        titleList.add("工时");
+        dataList.add(titleList);
+        for (Map<String, Object> map : mapList) {
+            List<String> itemMap=new ArrayList<>();
+            itemMap.add(String.valueOf(map.get("departmentName")==null?"":map.get("departmentName")));
+            itemMap.add(String.valueOf(map.get("progress")==null?"":map.get("progress")));
+            itemMap.add(String.valueOf(map.get("nowWorkTime")==null?"":map.get("nowWorkTime")+"分钟 "+map.get("nowCost")+"元"));
+            dataList.add(itemMap);
+        }
+        Company company = companyMapper.selectById(companyId);
+        String fileName=("部门生产统计表_")+company.getCompanyName()+System.currentTimeMillis();
         String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
         msg.setData(resp);
         return msg;

+ 183 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -179,7 +179,7 @@
         </if>
     </select>
 
-    <select id="getPlanRealTimeProgressList" resultType="java.util.Map">
+    <select id="getProcedureRealTimeProgressList" resultType="java.util.Map">
         select a.id as pptId,b.id as planId,b.plan_type as planType,(Case when b.plan_type=0 then b.product_scheduling_num else b.task_change_notice_num end) as taskName,
         c.name as procedureName,u.name as userName,d.work_time as planWorkTime,(select SUM(working_time) from report where user_procedure_team_id = d.id) as nowWorkTime,d.progress
         from plan_procedure_total a
@@ -203,7 +203,7 @@
         </if>
     </select>
 
-    <select id="getPlanRealTimeProgressCount" resultType="java.lang.Integer">
+    <select id="getProcedureRealTimeProgressCount" resultType="java.lang.Integer">
         select count(1) from (
         select a.id as pptId,b.id as planId,b.plan_type as planType,(Case when b.plan_type=0 then b.product_scheduling_num else b.task_change_notice_num end) as taskName,
         c.name as procedureName,u.name as userName,d.work_time as planWorkTime,(select SUM(working_time) from report where user_procedure_team_id = d.id) as nowWorkTime,d.progress
@@ -225,4 +225,185 @@
         ) as total
     </select>
 
+    <select id="workReportQuery" resultType="java.util.Map">
+        select pn.product_scheduling_num as productSchedulingNum,p.name as productName,pn.foreman_name as foremanName,
+        DATE_FORMAT(pn.start_date,'%Y%m%d') as startDate,DATE_FORMAT(pn.end_date,'%Y%m%d') as endDate,pp.name as procedureName,u.name as creatorName,DATE_FORMAT(r.create_date,'%Y%m%d') as createDate,uu.name as checkName
+        from report r
+        left join product p on r.product_id=p.id
+        left join plan pn on pn.id=r.plan_id
+        left join prod_procedure pp on r.prod_procedure_id=pp.id
+        left join user u on u.id=r.creator_id
+        left join user uu on uu.id=r.checker_id
+        <where>
+            r.company_id=#{companyId}
+            <if test="productId!=null and productId!=''">
+                and r.product_id=#{productId}
+            </if>
+            <if test="vehicleNum!=null and vehicleNum!=''">
+                and #{vehicleNum} between pn.vehicle_num_start and pn.vehicle_num_end
+            </if>
+            <if test="deptId!=null and deptId!=''">
+                and pn.station_id=#{deptId}
+            </if>
+            <if test="userId!=null and userId!=''">
+                and r.creator_id=#{userId}
+            </if>
+            <if test="startDate!=null and endDate!=null">
+                and r.create_date between #{startDate} and #{endDate}
+            </if>
+            <if test="steelNum!=null and steelNum!=''">
+            and r.steel_num_array is not null and
+            JSON_CONTAINS(r.steel_num_array,CONCAT('"',#{steelNum},'"'))
+            </if>
+        </where>
+        order by r.create_date desc
+        <if test="pageStart!=null and pageSize!=null">
+            limit #{pageStart},#{pageSize}
+        </if>
+    </select>
+
+    <select id="selectCountForWorkQuery" resultType="java.lang.Integer">
+        select count(1) from (
+        select pn.product_scheduling_num as productSchedulingNum,p.name as productName,pn.foreman_name as foremanName,
+        DATE_FORMAT(pn.start_date,'%Y%m%d') as startDate,DATE_FORMAT(pn.end_date,'%Y%m%d') as endDate,pp.name as procedureName,u.name as creatorName,DATE_FORMAT(r.create_date,'%Y%m%d') as createDate,uu.name as checkName
+        from report r
+        left join product p on r.product_id=p.id
+        left join plan pn on pn.id=r.plan_id
+        left join prod_procedure pp on r.prod_procedure_id=pp.id
+        left join user u on u.id=r.creator_id
+        left join user uu on uu.id=r.checker_id
+        <where>
+            r.company_id=#{companyId}
+            <if test="productId!=null and productId!=''">
+                and r.product_id=#{productId}
+            </if>
+            <if test="vehicleNum!=null and vehicleNum!=''">
+                and #{vehicleNum} between pn.vehicle_num_start and pn.vehicle_num_end
+            </if>
+            <if test="deptId!=null and deptId!=''">
+                and pn.station_id=#{deptId}
+            </if>
+            <if test="userId!=null and userId!=''">
+                and r.creator_id=#{userId}
+            </if>
+            <if test="startDate!=null and endDate!=null">
+                and r.create_date between #{startDate} and #{endDate}
+            </if>
+            <if test="steelNum!=null and steelNum!=''">
+                and r.steel_num_array is not null and
+                JSON_CONTAINS(r.steel_num_array,CONCAT('"',#{steelNum},'"'))
+            </if>
+        </where>
+        order by r.create_date desc
+        ) as total
+    </select>
+
+
+    <select id="getPlanRealTimeProgressList" resultType="java.util.Map">
+        select (Case when b.plan_type=0 then b.product_scheduling_num else b.task_change_notice_num end) as taskName,
+        b.foreman_name as userName,SUM(d.work_time) as planWorkTime,SUM(d.job_of_money) as planCost,
+        SUM((select SUM(working_time) from report where user_procedure_team_id = d.id))  as nowWorkTime,
+        SUM((select SUM(cost) from report where user_procedure_team_id = d.id)) as nowCost
+        from plan_procedure_total a
+        left join plan b on a.plan_id=b.id
+        left join prod_procedure c on a.prod_procedure_id=c.id
+        left join prod_procedure_team d on a.id=d.plan_procedure_id
+        left join user u on u.id=d.user_id
+        where b.company_id=#{companyId}
+        <if test="userId!=null and userId!=''">
+            and d.user_id=#{userId}
+        </if>
+        <if test="deptId!=null and deptId!=''">
+            and b.station_id=#{deptId}
+        </if>
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and (b.start_date &gt;= #{startDate} and b.end_date &lt;= #{endDate})
+        </if>
+        group by b.id
+        order by b.create_time desc ,a.id
+        <if test="pageStart!=null and pageSize!=null">
+            limit #{pageStart},#{pageSize}
+        </if>
+    </select>
+
+    <select id="getPlanRealTimeProgressCount" resultType="java.lang.Integer">
+        select count(1) from (
+        select (Case when b.plan_type=0 then b.product_scheduling_num else b.task_change_notice_num end) as taskName,
+        b.foreman_name as userName,SUM(d.work_time) as planWorkTime,SUM(d.job_of_money) as planCost,
+        SUM((select SUM(working_time) from report where user_procedure_team_id = d.id))  as nowWorkTime,
+        SUM((select SUM(cost) from report where user_procedure_team_id = d.id)) as nowCost
+        from plan_procedure_total a
+        left join plan b on a.plan_id=b.id
+        left join prod_procedure c on a.prod_procedure_id=c.id
+        left join prod_procedure_team d on a.id=d.plan_procedure_id
+        left join user u on u.id=d.user_id
+        where b.company_id=#{companyId}
+        <if test="userId!=null and userId!=''">
+            and d.user_id=#{userId}
+        </if>
+        <if test="deptId!=null and deptId!=''">
+            and b.station_id=#{deptId}
+        </if>
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and (b.start_date &gt;= #{startDate} and b.end_date &lt;= #{endDate})
+        </if>
+        group by b.id
+        order by b.create_time desc ,a.id
+        ) as total
+    </select>
+
+    <select id="getDpetStatisticsProgressList" resultType="java.util.Map">
+        select de.department_name as departmentName,
+        SUM(d.work_time) as planWorkTime,
+        SUM((select SUM(working_time) from report where user_procedure_team_id = d.id)) as nowWorkTime,
+        SUM((select SUM(cost) from report where user_procedure_team_id = d.id)) as  nowCost
+        from plan_procedure_total a
+        left join plan b on a.plan_id=b.id
+        left join prod_procedure c on a.prod_procedure_id=c.id
+        left join prod_procedure_team d on a.id=d.plan_procedure_id
+        left join user u on u.id=d.user_id
+        left join department de on b.station_id=de.department_id
+        where b.company_id=#{companyId}
+        <if test="userId!=null and userId!=''">
+            and d.user_id=#{userId}
+        </if>
+        <if test="deptId!=null and deptId!=''">
+            and b.station_id=#{deptId}
+        </if>
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and (b.start_date &gt;= #{startDate} and b.end_date &lt;= #{endDate})
+        </if>
+        group by b.station_id
+        order by b.create_time desc ,a.id
+        <if test="pageStart!=null and pageSize!=null">
+            limit #{pageStart},#{pageSize}
+        </if>
+    </select>
+
+    <select id="getDpetStatisticsProgressCount" resultType="java.lang.Integer">
+        select count(1) from (
+        select de.department_name as departmentName,
+        SUM(d.work_time) as planWorkTime,
+        SUM((select SUM(working_time) from report where user_procedure_team_id = d.id)) as nowWorkTime,
+        SUM((select SUM(cost) from report where user_procedure_team_id = d.id)) as  nowCost
+        from plan_procedure_total a
+        left join plan b on a.plan_id=b.id
+        left join prod_procedure c on a.prod_procedure_id=c.id
+        left join prod_procedure_team d on a.id=d.plan_procedure_id
+        left join user u on u.id=d.user_id
+        left join department de on b.station_id=de.department_id
+        where b.company_id=#{companyId}
+        <if test="userId!=null and userId!=''">
+            and d.user_id=#{userId}
+        </if>
+        <if test="deptId!=null and deptId!=''">
+            and b.station_id=#{deptId}
+        </if>
+        <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
+            and (b.start_date &gt;= #{startDate} and b.end_date &lt;= #{endDate})
+        </if>
+        group by b.station_id
+        ) as total
+    </select>
+
 </mapper>

+ 237 - 9
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -18,7 +18,10 @@
                   <span>{{ $t('navigation.projectReportingService') }}</span>
                 </template>
                   <el-menu-item index="1-1"  @click="ssl(0)"><p>{{'人员工时工价表'}}</p></el-menu-item>
-                  <el-menu-item index="1-2"  @click="ssl(1)"><p>{{'计划实时进度表'}}</p></el-menu-item>
+                  <el-menu-item index="1-2"  @click="ssl(1)"><p>{{'工序实时进度表'}}</p></el-menu-item>
+                  <el-menu-item index="1-3"  @click="ssl(2)"><p>{{'报工查询表'}}</p></el-menu-item>
+                  <el-menu-item index="1-4"  @click="ssl(3)"><p>{{'计划实时进度表'}}</p></el-menu-item>
+                  <el-menu-item index="1-5"  @click="ssl(4)"><p>{{'部门生产统计表'}}</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -39,10 +42,21 @@
           ></el-cascader>
 
           <!-- 人员筛选 -->
-          <el-select  v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:100px">
+          <el-select v-if="ins!=4" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:100px">
             <el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
 
+          <!-- 产品筛选 -->
+          <el-select v-if="ins == 2"  v-model="productId" :placeholder="'请选择'" @change="selcts()" clearable filterable size="small" style="width:100px">
+            <el-option v-for="(item, index) in productList" :key="index" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+
+          <!-- 车辆序号 -->
+          <el-input v-if="ins == 2" v-model="vehicleNum" placeholder="请输入车辆序号" @change="selcts()"  size="small" style="width:100px"></el-input>
+
+          <!-- 钢印号-->
+          <el-input v-if="ins == 2" v-model="steelNum" placeholder="请输入钢印号" @change="selcts()" size="small" style="width:100px"></el-input>
+
           <!-- 时间段筛选 -->
           <template>
             <span>
@@ -62,7 +76,7 @@
     <div ref="staff" style="margin: 5px 0px 0px 10px; width: 98%">
         <div class="staff" ref="tabless" :style="'width:'+(windowWidth - 430)+'px'">
             <!-- 人员工时工价表 -->
-            <el-table v-if="ins == 0"  key="19" border :data="personWorkHoursWagesList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+            <el-table v-if="ins == 0"  key="1" border :data="personWorkHoursWagesList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
                 <el-table-column align="center" prop="departmentCascade" label="部门名称" min-width="150">
                   <template slot-scope="scope">
                     {{scope.row.departmentCascade}}
@@ -85,8 +99,8 @@
                 </el-table-column>
             </el-table>
 
-            <!-- 计划实时进度表 -->
-            <el-table v-if="ins == 1"  key="19" border :data="planRealTimeProgressList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+            <!-- 工序实时进度表 -->
+            <el-table v-if="ins == 1"  key="2" border :data="procedureRealTimeProgressList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
                 <el-table-column align="center" prop="taskName" label="排产计划" min-width="150">
                   <template slot-scope="scope">
                     <span  @click="showPlanDetail(scope.row)" class="colorText">{{scope.row.taskName}}</span>
@@ -107,6 +121,51 @@
                 </el-table-column>
             </el-table>
 
+            <!-- 报工查询表 -->
+            <el-table v-if="ins == 2"  key="3" border :data="reportQueryList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+                <el-table-column align="center" prop="productSchedulingNum" label="排产工单号" min-width="150">
+                  <template slot-scope="scope">{{scope.row.productSchedulingNum}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="productName" label="产品名称" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="foremanName" label="工长" min-width="150"></el-table-column>
+                <el-table-column align="center" prop="startDate" label="开工时间" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="endDate" label="完工时间" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="procedureName" label="工序" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="creatorName" label="组员" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="createDate" label="报工时间" min-width="250"></el-table-column>
+                <el-table-column align="center" prop="checkName" label="质检人" min-width="250">
+                  <template slot-scope="scope">{{scope.row.checkName}}</template>
+                </el-table-column>
+            </el-table>
+
+            <!-- 计划实时进度表 -->
+            <el-table v-if="ins == 3"  key="4" border :data="planRealTimeProgressList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+                <el-table-column align="center" prop="taskName" label="排产计划" min-width="150">
+                  <template slot-scope="scope">{{scope.row.taskName}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="userName" label="工长" min-width="250"></el-table-column>
+                <el-table-column align="center"  label="计划工时" min-width="150">
+                  <template slot-scope="scope" v-if="scope.row.planWorkTime">{{scope.row.planWorkTime}}分钟 {{scope.row.planCost}}元</template>
+                </el-table-column>
+                <el-table-column align="center"  label="当前工时" min-width="250">
+                  <template slot-scope="scope" v-if="scope.row.nowWorkTime">{{scope.row.nowWorkTime}}分钟 {{scope.row.nowCost}}元</template>
+                </el-table-column>
+                <el-table-column align="center"  label="进度" min-width="250">
+                  <template slot-scope="scope" v-if="scope.row.progress">{{scope.row.progress}}</template>
+                </el-table-column>
+            </el-table>
+
+            <!-- 部门生产统计表 -->
+            <el-table v-if="ins == 4"  key="5" border :data="dpetStatisticsProgressList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+                <el-table-column align="center" prop="departmentName" label="部门名称" min-width="150">
+                  <template slot-scope="scope">{{scope.row.departmentName}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="progress" label="计划进度" min-width="250"></el-table-column>
+                <el-table-column align="center"  label="工时" min-width="250">
+                  <template slot-scope="scope" v-if="scope.row.nowWorkTime">{{scope.row.nowWorkTime}}分钟 {{scope.row.nowCost}}元</template>
+                </el-table-column>
+            </el-table>
+
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6">
           <el-pagination
@@ -386,9 +445,9 @@ export default {
       z   : null,
       value: null,
       dialog: false, // 单据查看展示
-      shuz: ['人员工时工价表', '计划实时进度表'],
+      shuz: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表'],
 
-      shuzArr: ['人员工时工价表', '计划实时进度表'],
+      shuzArr: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -454,6 +513,8 @@ export default {
 
 
       personWorkHoursWagesList:[],
+      procedureRealTimeProgressList:[],
+      dpetStatisticsProgressList:[],
       planRealTimeProgressList:[],
       personWorkHoursWagesHead:[],
 
@@ -478,7 +539,15 @@ export default {
 
       taskName:'',//计划名称
       planDetailDiaLog:false,
-      orderInsertPlanDetailDiaLog:false
+      orderInsertPlanDetailDiaLog:false,
+      reportQueryList:[],
+
+      //筛选项
+      productId:"",
+      productList:[],
+      vehicleNum:"",
+      steelNum:""
+
     };
   },
   computed: {},
@@ -663,6 +732,7 @@ export default {
     },
     //人员工时工价表数据
     getPersonWorkHoursWagesList(){
+        this.listLoading=true
         this.http.post( "/report/getPersonWorkHoursWagesList", {
             startDate:this.rangeDatas[0],
             endDate:this.rangeDatas[1],
@@ -683,6 +753,7 @@ export default {
               type: "error"
             });
           }
+          this.listLoading=false
         },error => {
           this.$message({
             message: error,
@@ -693,6 +764,7 @@ export default {
     //点击详情(人员工时工价表)
     getPersonWorkHoursWagesDetail(item){
       this.simpleDateChoose=item
+      this.listLoading=true
       this.http.post( "/report/getPersonWorkHoursWagesDetail", {
           date: this.simpleDateChoose.substring(0,4)+"-"+this.simpleDateChoose.substring(4,6)+"-"+this.simpleDateChoose.substring(6,this.simpleDateChoose.length),
           userId:this.detailUserId
@@ -708,6 +780,7 @@ export default {
             type: "error"
           });
         }
+        this.listLoading=false
       },error => {
         this.$message({
           message: error,
@@ -715,8 +788,66 @@ export default {
         });
       });
     },
+    //工序实际工时表
+    getProcedureRealTimeProgressList(){
+      this.listLoading=true
+        this.http.post( "/report/getProcedureRealTimeProgressList", {
+            startDate:this.rangeDatas[0],
+            endDate:this.rangeDatas[1],
+            pageIndex: this.page,
+            pageSize: this.size,
+            deptId:this.departmentIdArray[this.departmentIdArray.length - 1],
+            userId:this.userId
+        },
+        res => {
+          if (res.code == "ok") {
+            this.procedureRealTimeProgressList=res.data.records
+            this.total=res.data.total
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+          this.listLoading=false
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    //部门生产统计表
+    getDpetStatisticsProgressList(){
+      this.listLoading=true
+        this.http.post( "/report/getDpetStatisticsProgressList", {
+            startDate:this.rangeDatas[0],
+            endDate:this.rangeDatas[1],
+            pageIndex: this.page,
+            pageSize: this.size,
+            deptId:this.departmentIdArray[this.departmentIdArray.length - 1],
+        },
+        res => {
+          if (res.code == "ok") {
+            this.dpetStatisticsProgressList=res.data.records
+            this.total=res.data.total
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+          this.listLoading=false
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
     //计划实际工时表
     getPlanRealTimeProgressList(){
+      this.listLoading=true
         this.http.post( "/report/getPlanRealTimeProgressList", {
             startDate:this.rangeDatas[0],
             endDate:this.rangeDatas[1],
@@ -735,6 +866,61 @@ export default {
               type: "error"
             });
           }
+          this.listLoading=false
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    //人员工时工价表数据
+    getWorkReportQuery(){
+      this.listLoading=true
+        this.http.post( "/report/workReportQuery", {
+            startDate:this.rangeDatas[0],
+            endDate:this.rangeDatas[1],
+            pageIndex: this.page,
+            pageSize: this.size,
+            deptId:this.departmentIdArray[this.departmentIdArray.length - 1],
+            userId:this.userId,
+            productId:this.productId,
+            vehicleNum:this.vehicleNum,
+            steelNum:this.steelNum
+        },
+        res => {
+          if (res.code == "ok") {
+            this.reportQueryList=res.data.records
+            this.total=res.data.total
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
+          this.listLoading=false
+        },error => {
+          this.$message({
+            message: error,
+            type: "error"
+          });
+        });
+    },
+    //获取产品列表
+    getProductList(){
+      this.http.post( "/product/getProductPage", {
+        pageIndex:null,
+        pageSize:null,
+      },
+        res => {
+          if (res.code == "ok") {
+            this.productList=res.data.records
+          } else {
+            this.$message({
+              message: res.msg,
+              type: "error"
+            });
+          }
         },error => {
           this.$message({
             message: error,
@@ -827,7 +1013,13 @@ export default {
         if(this.ins==0){
             this.getPersonWorkHoursWagesList()
         }else if(this.ins==1){
+            this.getProcedureRealTimeProgressList()
+        }else if(this.ins==2){
+            this.getWorkReportQuery()
+        }else if(this.ins==3){
             this.getPlanRealTimeProgressList()
+        }else if(this.ins==4){
+            this.getDpetStatisticsProgressList()
         }
     },
     exportExcel() {
@@ -842,12 +1034,35 @@ export default {
         sl.deptId=this.departmentIdArray[0];
         sl.userId=this.userId;
     } else if (this.ins == 1) {
-        fName = '计划实际工时表_' + '.xlsx';
+        fName = '工序实时进度表_' + '.xlsx';
+        url += "/exportProcedureRealTimeProgressList";
+        sl.startDate=this.rangeDatas[0];
+        sl.endDate=this.rangeDatas[1];
+        sl.deptId=this.departmentIdArray[0];
+        sl.userId=this.userId;
+    }else if (this.ins == 2) {
+        fName = '报工详情表_' + '.xlsx';
+        url += "/exportWorkReportQuery";
+        sl.startDate=this.rangeDatas[0];
+        sl.endDate=this.rangeDatas[1];
+        sl.deptId=this.departmentIdArray[0];
+        sl.userId=this.userId;
+        sl.vehicleNum=this.vehicleNum;
+        sl.steelNum=this.steelNum;
+        sl.productId=this.productId
+    } else if (this.ins == 3) {
+        fName = '计划实时进度表_' + '.xlsx';
         url += "/exportPlanRealTimeProgressList";
         sl.startDate=this.rangeDatas[0];
         sl.endDate=this.rangeDatas[1];
         sl.deptId=this.departmentIdArray[0];
         sl.userId=this.userId;
+    } else if (this.ins == 4) {
+        fName = '部门生产统计表_' + '.xlsx';
+        url += "/exportDpetStatisticsProgressList";
+        sl.startDate=this.rangeDatas[0];
+        sl.endDate=this.rangeDatas[1];
+        sl.deptId=this.departmentIdArray[0];
     }
         this.http.post(url, sl,
         res => {
@@ -881,6 +1096,7 @@ export default {
       this.$forceUpdate()
       this.userId = null
       this.getUserList()
+      this.getProductList()
       this.selUserList = this.userList
       this.getList();
     },
@@ -914,9 +1130,21 @@ export default {
         this.getPersonWorkHoursWagesList()
       }
       if(this.ins == 1){
+        //TODO: 获取数据
+        this.getProcedureRealTimeProgressList()
+      }
+      if(this.ins == 2){
+        //TODO: 获取数据
+        this.getWorkReportQuery()
+      }
+      if(this.ins == 3){
         //TODO: 获取数据
         this.getPlanRealTimeProgressList()
       }
+      if(this.ins == 4){
+        //TODO: 获取数据
+        this.getDpetStatisticsProgressList()
+      }
     },
     // 日期
     getCurrentRangeTime() {