Преглед на файлове

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Min преди 1 година
родител
ревизия
05fbe22eb4

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

@@ -1598,8 +1598,13 @@ public class ReportController {
     }
 
     @RequestMapping("/productionQuantityList")
-    public HttpRespMsg productionQuantityList(Integer productId,String startDate,String endDate){
-        return reportService.productionQuantityList(productId,startDate,endDate);
+    public HttpRespMsg productionQuantityList(Integer productId,String startDate,String endDate,Integer pageIndex,Integer pageSize){
+        return reportService.productionQuantityList(productId,startDate,endDate,pageIndex,pageSize);
+    }
+
+    @RequestMapping("/exportProductionQuantity")
+    public HttpRespMsg exportProductionQuantity(Integer productId,String startDate,String endDate){
+        return reportService.exportProductionQuantity(productId,startDate,endDate);
     }
 }
 

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

@@ -143,5 +143,7 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg deleteReport(String id);
 
-    HttpRespMsg productionQuantityList(Integer productId, String startDate, String endDate);
+    HttpRespMsg productionQuantityList(Integer productId, String startDate, String endDate,Integer pageIndex, Integer pageSize);
+
+    HttpRespMsg exportProductionQuantity(Integer productId, String startDate, String endDate);
 }

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

@@ -4602,23 +4602,35 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg productionQuantityList(Integer productId, String startDate, String endDate) {
+    public HttpRespMsg productionQuantityList(Integer productId, String startDate, String endDate,Integer pageIndex, Integer pageSize) {
         HttpRespMsg msg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        User user = userMapper.selectById(request.getHeader("token"));
+        Integer companyId = user.getCompanyId();
+        boolean hasRole = sysFunctionService.hasPriviledge(user.getRoleId(), "月生产件数报表");
+        if (!hasRole) {
+            msg.setError("无权限");
+            return msg;
+        }
         //获取所有产品信息
-        List<Product> products = productMapper.selectList(new LambdaQueryWrapper<Product>().eq(productId != null, Product::getId, productId).eq(Product::getCompanyId,companyId));
+        if(pageIndex==null || pageSize==null){
+            pageIndex=-1;
+            pageSize=-1;
+        }
+        IPage<Product> productIPage = productMapper.selectPage(new Page<>(pageIndex, pageSize), new LambdaQueryWrapper<Product>().eq(productId != null, Product::getId, productId).eq(Product::getCompanyId, companyId));
+        List<Product> products = productIPage.getRecords();
+        long total = productIPage.getTotal();
         List<Integer> productIds = products.stream().map(Product::getId).distinct().collect(Collectors.toList());
         //获取产品下的所有工序数据
-        List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>().in(productIds != null, ProdProcedure::getProductId, productIds).eq(ProdProcedure::getCompanyId,companyId));
+        List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>().in(productIds != null&&productIds.size()>0, ProdProcedure::getProductId, productIds).eq(ProdProcedure::getCompanyId,companyId));
         //获取产品下所有已完工的日报数据
         LambdaQueryWrapper<Report> reportLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        reportLambdaQueryWrapper.eq(Report::getStatus, 2).in(productIds != null, Report::getProductId, productIds).eq(Report::getCompanyId,companyId);
+        reportLambdaQueryWrapper.eq(Report::getStatus, 2).in(productIds != null&&productIds.size()>0, Report::getProductId, productIds).eq(Report::getCompanyId,companyId);
         if(!StringUtils.isEmpty(startDate)&&!StringUtils.isEmpty(endDate)){
             reportLambdaQueryWrapper.between(Report::getCreateDate,startDate,endDate);
         }
         List<Report> reportList = reportMapper.selectList(reportLambdaQueryWrapper);
         List<Integer> reportIds = reportList.stream().map(Report::getId).distinct().collect(Collectors.toList());
-        List<ReportSteelNum> reportSteelNums = reportSteelNumMapper.selectList(new LambdaQueryWrapper<ReportSteelNum>().in(reportIds != null, ReportSteelNum::getReportId, reportIds));
+        List<ReportSteelNum> reportSteelNums = reportSteelNumMapper.selectList(new LambdaQueryWrapper<ReportSteelNum>().in(reportIds != null&&reportIds.size()>0, ReportSteelNum::getReportId, reportIds));
         List<Map<String,Object>> resultMapList=new ArrayList<>();
         for (Product product : products) {
             Map<String,Object> resultMap=new HashMap<>();
@@ -4693,7 +4705,42 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             resultMap.put("total",bigDecimal.doubleValue());
             resultMapList.add(resultMap);
         }
-        msg.setData(resultMapList);
+        Map<String,Object> result=new HashMap<>();
+        result.put("records",resultMapList);
+        result.put("total",total);
+        msg.setData(result);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg exportProductionQuantity(Integer productId, String startDate, String endDate) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        HttpRespMsg respMsg = productionQuantityList(productId, startDate, endDate, null, null);
+        Map<String, Object> data = (Map<String, Object>) respMsg.getData();
+        List<List<String>> dataList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+        titleList.add("产品名称");
+        titleList.add("完整件数");
+        titleList.add("凑整件数");
+        titleList.add("拆算件数");
+        titleList.add("总件数");
+        dataList.add(titleList);
+        List<Map<String, Object>> records = (List<Map<String, Object>>) data.get("records");
+        for (Map<String, Object> record : records) {
+            List<String> item=new ArrayList<>();
+            item.add(String.valueOf(record.get("productName")));
+            item.add(String.valueOf(record.get("integrated")));
+            item.add(String.valueOf(record.get("rounding")));
+            item.add(String.valueOf(record.get("converted")));
+            item.add(String.valueOf(record.get("total")));
+            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;
     }
+
 }

+ 68 - 5
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/statistic/index.vue

@@ -22,6 +22,7 @@
                   <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-menu-item index="1-6"  @click="ssl(5)"><p>{{'月生产件数报表'}}</p></el-menu-item>
                 </el-submenu>
               </el-menu>
           </el-col>
@@ -36,18 +37,18 @@
       <h3 ref="headHe" style="padding-left: 10px;float:left;width:15%">{{shuz[ins]}}</h3>
       <div class="headScreen" :style="'width:72%'">
           <!-- 部门筛选 -->
-          <el-cascader v-model="departmentIdArray" :options="departmentList" :placeholder="$t('qing-xuan-ze-bu-men')"
+          <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
             @change="selcts()" size="small" style="margin-bottom: 10px;width:180px"
           ></el-cascader>
 
           <!-- 人员筛选 -->
-          <el-select v-if="ins!=4" v-model="userId" :placeholder="$t('pleaseselectpersonnel')" @change="selcts()" clearable filterable size="small" style="width:120px">
+          <el-select v-if="ins!=4 && ins!=5" 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>
 
           <!-- 产品筛选 -->
-          <el-select v-if="ins == 2"  v-model="productId" :placeholder="'请选择'" @change="selcts()" clearable filterable size="small" style="width:140px">
+          <el-select v-if="ins == 2 || ins==5"  v-model="productId" :placeholder="'请选择产品'" @change="selcts()" clearable filterable size="small" style="width:140px">
             <el-option v-for="(item, index) in productList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
 
@@ -166,6 +167,25 @@
                 </el-table-column>
             </el-table>
 
+            <!-- 月生产件数报表 -->
+            <el-table v-if="ins == 5"  key="6" border :data="productionQuantityList" highlight-current-row v-loading="listLoading" :height="+tableHeight - 1" style="width: 100%;">
+                <el-table-column align="center" prop="productName" label="产品名称" min-width="150">
+                  <template slot-scope="scope">{{scope.row.productName}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="integrated" label="完整件数" min-width="150">
+                  <template slot-scope="scope">{{scope.row.integrated}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="rounding" label="凑整件数" min-width="150">
+                  <template slot-scope="scope">{{scope.row.rounding}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="converted" label="拆算件数" min-width="150">
+                  <template slot-scope="scope">{{scope.row.converted}}</template>
+                </el-table-column>
+                <el-table-column align="center" prop="total" label="总件数" min-width="150">
+                  <template slot-scope="scope">{{scope.row.total}}</template>
+                </el-table-column>
+            </el-table>
+
         <!--工具条-->
         <el-col :span="24" class="toolbar" v-if="ins != 6">
           <el-pagination
@@ -445,9 +465,9 @@ export default {
       z   : null,
       value: null,
       dialog: false, // 单据查看展示
-      shuz: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表'],
+      shuz: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表'],
 
-      shuzArr: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表'],
+      shuzArr: ['人员工时工价表', '工序实时进度表','报工查询表','计划实时进度表','部门生产统计表','月度生产件数表'],
 
       ins: 10000,
       user: JSON.parse(sessionStorage.user),
@@ -542,6 +562,8 @@ export default {
       orderInsertPlanDetailDiaLog:false,
       reportQueryList:[],
 
+      productionQuantityList:[],
+
       //筛选项
       productId:"",
       productList:[],
@@ -914,6 +936,34 @@ export default {
           });
         });
     },
+    //月度生产件数表
+    getProductionQuantityList(){
+      this.listLoading=true
+        this.http.post( "/report/productionQuantityList", {
+            startDate:this.rangeDatas[0],
+            endDate:this.rangeDatas[1],
+            pageIndex: this.page,
+            pageSize: this.size,
+            productId:this.productId,
+        },
+        res => {
+          if (res.code == "ok") {
+            this.productionQuantityList=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", {
@@ -1028,6 +1078,8 @@ export default {
             this.getPlanRealTimeProgressList()
         }else if(this.ins==4){
             this.getDpetStatisticsProgressList()
+        }else if(this.ins==5){
+            this.getProductionQuantityList()
         }
     },
     exportExcel() {
@@ -1071,6 +1123,13 @@ export default {
         sl.startDate=this.rangeDatas[0];
         sl.endDate=this.rangeDatas[1];
         sl.deptId=this.departmentIdArray[this.departmentIdArray.length-1];
+    }
+    else if (this.ins == 5) {
+        fName = '月度生产件数表_' + '.xlsx';
+        url += "/exportProductionQuantity";
+        sl.startDate=this.rangeDatas[0];
+        sl.endDate=this.rangeDatas[1];
+        sl.productId=this.productId;
     }
         this.http.post(url, sl,
         res => {
@@ -1153,6 +1212,10 @@ export default {
         //TODO: 获取数据
         this.getDpetStatisticsProgressList()
       }
+      if(this.ins == 5){
+        //TODO: 获取数据
+        this.getProductionQuantityList()
+      }
     },
     // 日期
     getCurrentRangeTime() {