Min 1 jaar geleden
bovenliggende
commit
ad30ce579d

+ 7 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ReportController.java

@@ -1616,8 +1616,13 @@ public class ReportController {
     }
 
     @RequestMapping("/getPlanDataWithStation")
-    public HttpRespMsg getPlanDataWithStation(@RequestParam(defaultValue = "0") Integer isFilterDept,Integer stationId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
-        return reportService.getPlanDataWithStation(isFilterDept,stationId,startDate,endDate,pageIndex,pageSize);
+    public HttpRespMsg getPlanDataWithStation(@RequestParam(defaultValue = "0") Integer isFilterDept,Integer filterDeptId,Integer stationId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.getPlanDataWithStation(isFilterDept,filterDeptId,stationId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("/exportPlanDataWithStation")
+    public HttpRespMsg exportPlanDataWithStation(@RequestParam(defaultValue = "0") Integer isFilterDept,Integer filterDeptId,Integer stationId,String startDate,String endDate){
+        return reportService.exportPlanDataWithStation(isFilterDept,filterDeptId,stationId,startDate,endDate);
     }
 }
 

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

@@ -204,7 +204,6 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String,Object>> getReportList(String startDate, String endDate, Integer planId, Integer stateKey, Integer departmentId, Integer companyId);
 
-    List<Map<String,Object>> getPlanDataWithStation(Integer companyId, String startDate, String endDate, String foremanId,@Param("list")List<Integer> deptIds, Integer pageStart, Integer pageSize);
+    List<Map<String,Object>> getPlanDataWithStation(Integer companyId, String startDate, String endDate, String foremanId, Integer pageStart, Integer pageSize);
 
-    Integer getPlanDataWithStationCount(Integer companyId, String startDate, String endDate, String foremanId,@Param("list") List<Integer> deptIds, Integer pageStart, Integer pageSize);
 }

+ 3 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ReportService.java

@@ -149,5 +149,7 @@ public interface ReportService extends IService<Report> {
 
  	Object fixSteelNumData();
 
- 	HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
+ 	HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer filterDeptId,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportPlanDataWithStation(Integer isFilterDept, Integer filterDeptId, Integer stationId, String startDate, String endDate);
 }

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

@@ -5001,7 +5001,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
 	@Override
-    public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
+    public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer filterDeptId,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize) {
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         NumberFormat format = NumberFormat.getPercentInstance();
@@ -5019,20 +5019,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             pageStart = (pageIndex -1) * pageSize;
             pageSize=pageStart+pageSize;
         }
-        List<Integer> deptIds=null;
-        if(isFilterDept!=0){
-            List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().select(Department::getDepartmentId).eq(Department::getSuperiorId, stationId));
-            deptIds=departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
-        }
         boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部车间工位计划表");
         List<Map<String, Object>> mapList;
-        Integer total;
         if(!viewAll){
-            mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), deptIds, pageStart, pageSize);
-//            total = reportMapper.getPlanDataWithStationCount(companyId, startDate, endDate, user.getId(), deptIds, null, null);
+            mapList = reportMapper.getPlanDataWithStation(companyId, startDate, endDate, user.getId(), pageStart, pageSize);
         }else {
-            mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,deptIds,pageStart,pageSize);
-//            total =reportMapper.getPlanDataWithStationCount(companyId,startDate,endDate,null,deptIds,null,null);
+            mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,pageStart,pageSize);
         }
         List<String> dateList = mapList.stream().map(m -> String.valueOf(m.get("startDate"))).distinct().collect(Collectors.toList());
         Map<Object, List<Map<String, Object>>> listMapGroupByDate = mapList.stream().collect(Collectors.groupingBy(m -> String.valueOf(m.get("startDate"))));
@@ -5045,20 +5037,27 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if(maps==null||maps.size()<=0){
                 continue;
             }
-            List<Integer> deptIdList = maps.stream().map(m -> Integer.valueOf(String.valueOf(m.get("deptId")))).distinct().collect(Collectors.toList());
-            Map<Object, List<Map<String, Object>>> listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
-            BigDecimal planNum=new BigDecimal(0);
-            BigDecimal nowNum=new BigDecimal(0);
-            BigDecimal planCost=new BigDecimal(0);
-            BigDecimal nowCost=new BigDecimal(0);
-            BigDecimal planHour=new BigDecimal(0);
-            BigDecimal nowHour=new BigDecimal(0);
+            List<Integer> deptIdList;
+            Map<Object, List<Map<String, Object>>> listMapGroupByDept;
+            if(isFilterDept==0){
+                deptIdList  = maps.stream().map(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))).distinct().collect(Collectors.toList());
+                listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("superiorId")))));
+            }else {
+                deptIdList = maps.stream().filter(m->Integer.valueOf(String.valueOf(m.get("superiorId"))).equals(filterDeptId)).map(m -> Integer.valueOf(String.valueOf(m.get("deptId")))).distinct().collect(Collectors.toList());
+                listMapGroupByDept = maps.stream().collect(Collectors.groupingBy(m -> Integer.valueOf(String.valueOf(m.get("deptId")))));
+            }
             for (Integer dept : deptIdList) {
                 Map<String,Object> item=new HashMap<>();
                 item.put("startDate",date.replaceAll("-",""));
                 List<Map<String, Object>> list = listMapGroupByDept.get(dept);
                 item.put("deptId",dept);
                 item.put("departmentCascade",convertDepartmentIdToCascade(dept,departmentList));
+                BigDecimal planNum=new BigDecimal(0);
+                BigDecimal nowNum=new BigDecimal(0);
+                BigDecimal planCost=new BigDecimal(0);
+                BigDecimal nowCost=new BigDecimal(0);
+                BigDecimal planHour=new BigDecimal(0);
+                BigDecimal nowHour=new BigDecimal(0);
                 for (Map<String, Object> map : list) {
                     planNum=planNum.add(new BigDecimal((String.valueOf(map.get("planNum")))));
                     nowNum=nowNum.add(new BigDecimal((String.valueOf(map.get("nowNum")))));
@@ -5122,14 +5121,59 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             map.put("totalProgress",format.format(totalProgress.doubleValue()));
             lastList.add(map);
         }
+        if(stationId!=null){
+            lastList=lastList.stream().filter(l->Integer.valueOf(String.valueOf(l.get("deptId"))).equals(stationId)).collect(Collectors.toList());
+        }
         //得到的数据再根据部门过滤一下
-        if(pageSize>lastList.size()){
+        if(pageSize!=null&&pageSize>lastList.size()){
             pageSize=lastList.size();
         }
-        resultMap.put("records",lastList.subList(pageStart,pageSize));
+        resultMap.put("records",(pageIndex==null||pageSize==null)?lastList:lastList.subList(pageStart,pageSize));
         resultMap.put("header",dataStringList);
         resultMap.put("total",lastList.size());
         msg.setData(resultMap);
         return msg;
     }
+
+    @Override
+    public HttpRespMsg exportPlanDataWithStation(Integer isFilterDept, Integer filterDeptId, Integer stationId, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HttpRespMsg data = getPlanDataWithStation(isFilterDept, filterDeptId, stationId, startDate, endDate, null, null);
+        Map<String, Object> objectMap = (Map<String, Object>) data.data;
+        List<Map<String, Object>> mapList = (List<Map<String, Object>>) objectMap.get("records");
+        List<String> title=new ArrayList<>();
+        title.add("部门名称");
+        List<String> headerList = (List<String>) objectMap.get("header");
+        title.addAll(headerList);
+        title.add("合计");
+        List<List<String>> dataList=new ArrayList<>();
+        dataList.add(title);
+        for (Map<String, Object> map : mapList) {
+            List<String> item=new ArrayList<>();
+            item.add((String) map.get("departmentCascade"));
+            List<Map<String, Object>> deptList = (List<Map<String, Object>>) map.get("deptList");
+            for (String dateString : headerList) {
+                Optional<Map<String, Object>> first = deptList.stream().filter(d -> String.valueOf(d.get("startDate")).equals(dateString)).findFirst();
+                if(first.isPresent()){
+                    Map<String, Object> target = first.get();
+                    item.add("计划数:"+target.get("planNum")+"  "+target.get("planHour")+"分钟"+"  "+target.get("planCost")+"元"+"\n"+
+                             "实际数:"+target.get("nowNum")+"  "+target.get("nowHour")+"分钟"+"  "+target.get("nowCost")+"元"+"\n"+
+                             "进度:"+target.get("progress"));
+                }else {
+                   item.add("");
+                }
+            }
+            item.add("计划数:"+map.get("totalPlanNum")+"  "+map.get("totalPlanHour")+"分钟"+"  "+map.get("totalPlanCost")+"元"+"\n"+
+                    "实际数:"+map.get("totalNowNum")+"  "+map.get("totalNowHour")+"分钟"+"  "+map.get("totalNowCost")+"元"+"\n"+
+                    "进度:"+map.get("totalProgress"));
+            dataList.add(item);
+
+        }
+        Company company = companyMapper.selectById(companyId);
+        String fileName=("车间工位计划表_")+company.getCompanyName()+System.currentTimeMillis();
+        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName, dataList, path);
+        msg.setData(resp);
+        return msg;
+    }
 }

+ 4 - 33
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -457,8 +457,10 @@
     </select>
 
     <select id="getPlanDataWithStation" resultType="java.util.Map">
-        SELECT p.id, p.num AS planNum,SUM(ppt.`total_working_hours`) AS  planHour ,IFNULL(SUM(ppt.`total_fill_time`),0) AS nowHour,SUM(ppt.`total_wages`) AS planCost,IFNULL(SUM(ppt.`total_wages`*ppt.`total_progress`/100),0) AS nowCost,
-        IFNULL(ROUND(IFNULL(ROUND(SUM(ppt.total_fill_time)/SUM(ppt.total_working_hours), 2),0)*p.num,2),0) AS nowNum,d.department_id AS deptId,p.start_date AS startDate
+        SELECT p.id, p.num AS planNum,SUM(ppt.`total_working_hours`) AS  planHour ,IFNULL(SUM(ppt.`total_fill_time`),0) AS nowHour,SUM(ppt.`total_wages`) AS planCost,
+        IFNULL(SUM(ppt.`total_wages`*ppt.`total_progress`/100),0) AS nowCost,
+        IFNULL(ROUND(IFNULL(ROUND(SUM(ppt.total_fill_time)/SUM(ppt.total_working_hours), 2),0)*p.num,2),0) AS nowNum,d.department_id AS deptId,p.start_date AS startDate,
+        IFNULL(d.`superior_id`,d.`department_id`) AS superiorId
         FROM plan p
         LEFT JOIN plan_procedure_total ppt ON ppt.plan_id=p.id
         LEFT JOIN department d ON p.station_id=d.department_id
@@ -470,12 +472,6 @@
             <if test="foremanId!=null">
                 and p.station_id=#{foremanId}
             </if>
-            <if test="list!=null and list.size()>0">
-                and p.station_id in
-                <foreach collection="list" open="(" close=")" separator="," item="item">
-                    #{item}
-                </foreach>
-            </if>
         </where>
         group by p.id
         order by p.create_time desc
@@ -484,29 +480,4 @@
 <!--        </if>-->
     </select>
 
-    <select id="getPlanDataWithStationCount" resultType="java.lang.Integer">
-        select (1) from (
-        select p.id
-        from plan p
-        left join plan_procedure_total ppt on ppt.plan_id=p.id
-        left join department d on p.station_id=d.department_id
-        <where>
-            p.company_id=#{companyId}
-            <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
-                and p.start_date between #{startDate} and #{endDate}
-            </if>
-            <if test="foremanId!=null">
-                and p.station_id=#{foremanId}
-            </if>
-            <if test="list!=null and list.size()>0">
-                and p.station_id in
-                <foreach collection="list" open="(" close=")" separator="," item="item">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-        group by p.id
-        ) as total
-    </select>
-
 </mapper>

+ 24 - 12
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -39,12 +39,12 @@
       <div class="headScreen" :style="'width:72%'">
           <!-- 部门筛选 -->
           <el-cascader v-if="ins!=5" v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
-            :props="{ checkStrictly: true,expandTrigger: 'hover',multiple: ins == 6 ? true : false }" collapse-tags :show-all-levels="false" clearable
+            :props="{ checkStrictly: true,expandTrigger: 'hover' }" collapse-tags :show-all-levels="false" clearable
             @change="selcts()" size="small" style="margin-bottom: 10px;width:180px"
           ></el-cascader>
 
           <!-- 人员筛选 -->
-          <el-select v-if="ins!=4 && ins!=5" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:120px">
+          <el-select v-if="ins!=4 && ins!=5 && ins!=6" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:120px">
             <el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
 
@@ -191,8 +191,8 @@
             <el-table v-if="ins == 6"  key="7" border :data="planDataWithStationDatas" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
                 <el-table-column align="center" prop="departmentCascade" label="部门名称"   min-width="150"  fixed="left">
                   <template slot-scope="scope">
-                    <!-- <span class="colorText" @click="showReportDetail(scope.row,item)" >{{scope.row.departmentCascade}}</span> -->
-                    <span class="colorText" >{{scope.row.departmentCascade}}</span>
+                    <span class="colorText" @click="getPlanDataWithStation(scope.row.deptId)" >{{scope.row.departmentCascade}}</span>
+                    <!-- <span class="colorText" >{{scope.row.departmentCascade}}</span> -->
                   </template>
                 </el-table-column>
                 <el-table-column v-for="(item, index) in planDataWithStationHead" :key="index" :label="item" align="center" min-width="150">
@@ -997,15 +997,20 @@ export default {
         });
     },
     //车间工位计划表
-    getPlanDataWithStation(){
+    getPlanDataWithStation(deptId){
+      let param={
+        startDate:this.rangeDatas[0],
+        endDate:this.rangeDatas[1],
+        pageIndex: this.page,
+        pageSize: this.size,
+        stationId:this.departmentIdArray[this.departmentIdArray.length - 1],
+      }
+      if(deptId){
+        param.filterDeptId=deptId
+        param.isFilterDept=1
+      }
       this.listLoading=true
-        this.http.post( "/report/getPlanDataWithStation", {
-            startDate:this.rangeDatas[0],
-            endDate:this.rangeDatas[1],
-            pageIndex: this.page,
-            pageSize: this.size,
-            stationId:this.departmentIdArray[this.departmentIdArray.length - 1],
-        },
+        this.http.post( "/report/getPlanDataWithStation",param,
         res => {
           if (res.code == "ok") {
             this.planDataWithStationDatas=res.data.records
@@ -1193,6 +1198,13 @@ export default {
         sl.startDate=this.rangeDatas[0];
         sl.endDate=this.rangeDatas[1];
         sl.productId=this.productId;
+    }
+    else if (this.ins == 6) {
+        fName = '车间工位计划表_' + '.xlsx';
+        url += "/exportPlanDataWithStation";
+        sl.startDate=this.rangeDatas[0];
+        sl.endDate=this.rangeDatas[1];
+        sl.deptId=this.departmentIdArray[this.departmentIdArray.length-1];
     }
         this.http.post(url, sl,
         res => {