Min 1 năm trước cách đây
mục cha
commit
8dd99717e9

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

@@ -1606,5 +1606,10 @@ public class ReportController {
     public HttpRespMsg exportProductionQuantity(Integer productId,String startDate,String endDate){
         return reportService.exportProductionQuantity(productId,startDate,endDate);
     }
+
+    @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);
+    }
 }
 

+ 4 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -203,4 +203,8 @@ public interface ReportMapper extends BaseMapper<Report> {
     Integer getDpetStatisticsProgressCount(Integer companyId, String deptId, String foremanId, String userId, String startDate, String endDate);
 
     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);
+
+    Integer getPlanDataWithStationCount(Integer companyId, String startDate, String endDate, String foremanId,@Param("list") List<Integer> deptIds, Integer pageStart, Integer pageSize);
 }

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

@@ -146,4 +146,6 @@ public interface ReportService extends IService<Report> {
     HttpRespMsg productionQuantityList(Integer productId, String startDate, String endDate,Integer pageIndex, Integer pageSize);
 
     HttpRespMsg exportProductionQuantity(Integer productId, String startDate, String endDate);
+
+    HttpRespMsg getPlanDataWithStation(Integer isFilterDept,Integer stationId, String startDate, String endDate, Integer pageIndex, Integer pageSize);
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -139,7 +139,7 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
                 queryWrapper.and(wrapper->wrapper.eq(Plan::getStartDate,now).or().inSql(Plan::getId,"select ppt1.plan_id \n" +
                         "from  plan_procedure_total ppt1\n" +
                         "left join prod_procedure_team  ppt on ppt.plan_procedure_id=ppt1.id\n" +
-                        "where ppt.progress<100")).eq(Plan::getHideState,0);
+                        "where ppt.progress<100")).lt(Plan::getStartDate,now.plusDays(1)).eq(Plan::getHideState,0);
             }else {
                 queryWrapper.eq(Plan::getStartDate,(planType==0||planType==2)?now:now.plusDays(1));
             }

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

@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
@@ -4808,7 +4809,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                         }
                     });
                     //所有已填报的钢印号有任意满足 上面未填报工序集合 就算凑整件数
-                    //找到所有填报了未填报工序日报数据
+                    //找到所有填报了未填报工序日报数据
                     List<Report> comparatorReportList = targetReportList.stream().filter(r ->r.getProdProcedureId()!=null && hasNotReportProdProduceIds.contains(r.getProdProcedureId())).collect(Collectors.toList());
                     //过滤这些日报下的工序数据
                     List<Integer> targetComparator = comparatorReportList.stream().map(Report::getProdProcedureId).distinct().collect(Collectors.toList());
@@ -4829,7 +4830,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                             check=check.multiply(divide);
                             bigDecimal=bigDecimal.add(check);
                         }
-                        converted=bigDecimal.doubleValue();
+                        converted+=bigDecimal.doubleValue();
                     }
                 }
 
@@ -4880,4 +4881,74 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         return msg;
     }
 
+    @Override
+    public HttpRespMsg getPlanDataWithStation(Integer isFilterDept,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();
+        format.setMinimumFractionDigits(2);
+        Integer companyId = user.getCompanyId();
+        DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyyMMdd");
+        List<LocalDate> dates = getDays(LocalDate.parse(startDate, dtf), LocalDate.parse(endDate, dtf));
+        List<String> dataStringList=new ArrayList<>();
+        for (LocalDate localDate : dates) {
+            dataStringList.add(localDate.format(dtf1));
+        }
+        Integer pageStart = null;
+        if (pageIndex!=null){
+            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);
+        }else {
+            mapList = reportMapper.getPlanDataWithStation(companyId,startDate,endDate,null,deptIds,pageStart,pageSize);
+//            total =reportMapper.getPlanDataWithStationCount(companyId,startDate,endDate,null,deptIds,null,null);
+        }
+        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"))));
+        Map<String,Object> resultMap=new HashMap<>();
+        //处理数据 先按照日期 再按照分组重新组装数据
+        List<Map<String,Object>> resultList=new ArrayList<>();
+        for (String date : dateList) {
+            List<Map<String, Object>> maps = listMapGroupByDate.get(date);
+            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")))));
+            Map<String,Object> item=new HashMap<>();
+            item.put("startDate",date);
+            BigDecimal planNum=new BigDecimal(0);
+            BigDecimal nowNum=new BigDecimal(0);
+            for (Integer dept : deptIdList) {
+                List<Map<String, Object>> list = listMapGroupByDept.get(dept);
+                item.put("deptId",dept);
+                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")))));
+                }
+                item.put("planNum",planNum.doubleValue());
+                item.put("nowNum",nowNum.doubleValue());
+                BigDecimal progress = nowNum.divide(planNum, RoundingMode.HALF_UP);
+                item.put("progress",format.format(progress.doubleValue()));
+                resultList.add(item);
+            }
+        }
+        resultMap.put("records",resultList.subList(pageStart,pageSize));
+        resultMap.put("header",dataStringList);
+        resultMap.put("total",resultList.size());
+        msg.setData(resultMap);
+        return msg;
+    }
 }

+ 53 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/ReportMapper.xml

@@ -456,4 +456,57 @@
         </if>
     </select>
 
+    <select id="getPlanDataWithStation" resultType="java.util.Map">
+        select p.id, p.num as planNum,
+        ROUND(IFNULL(ROUND(SUM(ppt.total_fill_time)/SUM(ppt.total_working_hours), 2),0)*p.num,2) as nowNum,d.department_id as deptId,p.start_date as startDate
+         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
+        order by p.create_time desc
+<!--        <if test="pageStart!=null and pageSize!=null">-->
+<!--            limit #{pageStart},#{pageSize}-->
+<!--        </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>

+ 59 - 2
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -23,6 +23,7 @@
                   <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-menu-item index="1-6"  @click="ssl(5)"><p>{{'月生产件数报表'}}</p></el-menu-item>
+                  <el-menu-item index="1-7"  @click="ssl(6)"><p>{{'车间工位计划表'}}</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -186,6 +187,29 @@
                 </el-table-column>
             </el-table>
 
+            <!-- 车间工位计划表 -->
+            <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">
+                    {{scope.row.departmentCascade}}
+                  </template>
+                </el-table-column>
+                <el-table-column v-for="(item, index) in planDataWithStationHead" :key="index" :label="item" align="center" min-width="150">
+                    <template slot-scope="scope">
+                        <div v-for="(items, indexs) in scope.row.personWorkHoursWages" :key="indexs" @click="showReportDetail(scope.row,item)" class="colorText">
+                            <div v-if="items.crateDate == item">
+                                {{items.workTime}}分钟  {{items.cost}}元
+                            </div>
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" prop="totalResult" label="合计" min-width="150">
+                   <template slot-scope="scope">
+                    {{scope.row.totalResult}}
+                  </template>
+                </el-table-column>
+            </el-table>
+
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6">
           <el-pagination
@@ -466,9 +490,9 @@ export default {
       z   : null,
       value: null,
       dialog: false, // 单据查看展示
-      shuz: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表'],
+      shuz: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表','车间工位计划表'],
 
-      shuzArr: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表'],
+      shuzArr: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表','车间工位计划表'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -564,6 +588,8 @@ export default {
       reportQueryList:[],
 
       productionQuantityList:[],
+      planDataWithStationDatas:[],
+      planDataWithStationHead:[],
 
       //筛选项
       productId:"",
@@ -965,6 +991,35 @@ export default {
           });
         });
     },
+    //车间工位计划表
+    getPlanDataWithStation(){
+      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],
+        },
+        res => {
+          if (res.code == "ok") {
+            this.planDataWithStationDatas=res.data.records
+            this.planDataWithStationHead=res.data.header
+            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", {
@@ -1081,6 +1136,8 @@ export default {
             this.getDpetStatisticsProgressList()
         }else if(this.ins==5){
             this.getProductionQuantityList()
+        }else if(this.ins==6){
+            this.getPlanDataWithStation()
         }
     },
     exportExcel() {