瀏覽代碼

首页报表

chenc 4 年之前
父節點
當前提交
d4b0836db9

+ 2 - 0
src/app/entity/fbs/fbs-abnormal-working-hours.ts

@@ -60,5 +60,7 @@ export class FbsAbnormalWorkingHours extends Page{
 
 	//异常类别
 	fbsAbnormalWorkingHoursTypeList?:any[];
+
+	fbsAbnormalWorkingHoursList?:FbsAbnormalWorkingHours[];
 }
 

+ 2 - 1
src/app/entity/fbs/fbs-workshop-dispatch-list.ts

@@ -12,7 +12,7 @@ export class FbsWorkshopDispatchList extends Page{
 	/**日期*/
 	date?:string;
 	/**生产订单号id*/
-	productionOrderNumberId?:string;
+	productionOrderNumberId?:number;
 	/**生产订单号名称*/
 	productionOrderNumberName?:string;
 	/**产品*/
@@ -33,4 +33,5 @@ export class FbsWorkshopDispatchList extends Page{
 	productionLineName?:string;
 	/**生产线id */
 	productionLineId?:string;
+	fbsWorkshopDispatchListList?:FbsWorkshopDispatchList[]
 }

+ 131 - 101
src/app/routes/dashboard/analysis/analysis.component.html

@@ -60,165 +60,195 @@
   </div>
 </div> -->
 <!-- class="tableTdPadding" -->
+<!-- <th nzLeft="0px" nzWidth="60px"><strong>序号</strong></th>
+<th nzLeft="60px" nzWidth="100px"><strong>生产线</strong></th>
+<th nzLeft="160px" nzWidth="100px"><strong>生产订单号</strong></th> -->
 <div nz-row [nzGutter]="24" class="pt-lg">
   <div nz-col nzXs="24" nzSm="24" nzMd="24" nzLg="24">
-    <nz-table  nzSize="small" #columnTable nzBordered  [nzData]="listOfData" [nzScroll]="{ x: '1300px', y:'800px'}" [nzShowPagination]="false" [nzFrontPagination]="false">
+    <nz-table  nzSize="small" #columnTable nzBordered [nzData]="listOfData"
+      [nzScroll]="{ x: widthLength+'px', y:'800px'}" [nzShowPagination]="false" [nzFrontPagination]="false">
       <thead>
-        
         <tr>
-          <th nzLeft="0px" nzWidth="60px"><strong>序号</strong></th>
-          <th nzLeft="60px" nzWidth="100px"><strong>生产线</strong></th>
-          <th nzLeft="160px" nzWidth="100px"><strong>生产订单号</strong></th>
-          <th nzWidth="100px"><strong>物料编码</strong></th>
+          <th nzWidth="60px"><strong>序号</strong></th>
+          <th nzWidth="100px"><strong>生产线</strong></th>
+          <th nzWidth="100px"><strong>生产订单号</strong></th>
+          <th nzWidth="110px"><strong>物料编码</strong></th>
           <th nzWidth="100px"><strong>物料名称</strong></th>
           <th nzWidth="60px"><strong>月度计划</strong></th>
           <th nzWidth="60px"><strong>标准工时(H)</strong></th>
           <th nzWidth="60px"><strong>累计完成数量</strong></th>
           <th nzWidth="60px"><strong>累计完成工时</strong></th>
-          <th nzWidth="100px"><strong>当日计算数量</strong></th>
-          <th nzWidth="100px"><strong>当日完成数量</strong></th>
-          <th nzWidth="100px"><strong>当日完成工时 </strong></th>
-          <th nzWidth="100px"><strong>当日标准工时</strong></th>
-          <th nzWidth="100px"><strong>当日生产效率</strong></th>
-          <th nzWidth="100px"><strong>当日达成率</strong></th>
+          <ng-container *ngFor="let date of dateList">
+            <th nzWidth="100px"><strong>当日计算数量</strong></th>
+            <th nzWidth="100px"><strong>当日完成数量</strong></th>
+            <th nzWidth="100px"><strong>当日完成工时 </strong></th>
+            <th nzWidth="100px"><strong>当日标准工时</strong></th>
+            <th nzWidth="100px"><strong>当日生产效率</strong></th>
+            <th nzWidth="100px"><strong>当日达成率</strong></th>
+          </ng-container>
         </tr>
         <tr>
           <th colspan="9"></th>
-          <th colspan="6" style="background-color:cyan"><strong>10月16日</strong></th>
+          <ng-container *ngFor="let date of dateList">
+            <th colspan="6" style="background-color:cyan"><strong>{{date.date|date:'y-MM-dd'}}</strong></th>
+          </ng-container>
         </tr>
       </thead>
       <tbody>
-        <tr *ngFor="let data of columnTable.data">
-          <td nzLeft="0px">{{ data.name }}</td>
-          <td nzLeft="60px">{{ data.age }}</td>
-          <td nzLeft="160px">{{ data.address }}</td>
-          <td></td>
-          <td></td>
+        <tr *ngFor="let data of columnTable.data;let i = index">
+          <!-- *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines" -->
+          <td *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">{{ data.sort }}</td>
+          <td *ngIf="data.mergeLines!=0" [attr.rowSpan]="data.mergeLines">{{ data.productionLineName }}</td>
+          <td>{{ data.productionOrderNumberName }}</td>
+          <td>{{data.productId}}</td>
+          <td>{{data.product}}</td>
+          <td>{{data.numberOfTasksTotal}}</td>
+          <td>{{data.standardWorkingHoursTotal}}</td>
           <td>1</td>
           <td>0.5</td>
-          <td>1</td>
-          <td>0.5</td>
-          <td></td>
-          <td></td>
-          <td></td>
-          <td>0</td>
-          <td>0%</td>
-          <td>0%</td>
-          
+          <ng-container *ngFor="let date of data.fbsWorkshopDispatchListList">
+            <td>{{date.numberOfTasks}}</td>
+            <td></td>
+            <td></td>
+            <td>{{date.standardWorkingHours}}</td>
+            <td>0%</td>
+            <td>0%</td>
+          </ng-container>
+
         </tr>
+        <!-- 统计 -->
         <tr style="background-color:chocolate">
-          <td nzLeft="0px" style="background-color:chocolate"></td>
-          <td nzLeft="60px" style="background-color:chocolate">统计</td>
-          <td nzLeft="160px" style="background-color:chocolate"></td>
+          <td style="background-color:chocolate"></td>
+          <td style="background-color:chocolate">统计</td>
+          <td style="background-color:chocolate"></td>
           <td></td>
           <td></td>
           <td>1</td>
           <td>1</td>
           <td>1</td>
           <td>1</td>
-          <td>1</td>
-          <td>1</td>
-          <td>1</td>
-          <td>1</td>
-          <td>1</td>
-          <td>1</td>
+          <ng-container *ngFor="let date of dateList">
+            <td>1</td>
+            <td>1</td>
+            <td>1</td>
+            <td>1</td>
+            <td>1</td>
+            <td>1</td>
+          </ng-container>
         </tr>
         <tr></tr>
       </tbody>
+      <!-- 异常工时 -->
       <tbody>
         <tr>
-          <td nzLeft="0px"></td>
-          <td nzLeft="60px">月计划达成率</td>
-          <td nzLeft="160px">1.95%</td>
+          <td></td>
+          <td>月计划达成率</td>
+          <td>1.95%</td>
           <td>月生产效率</td>
-          <td >根据生产计划进度。实时变化</td>
+          <td>根据生产计划进度。实时变化</td>
           <td colSpan="4">出勤情况</td>
-          <td>应到人数</td>
-          <td>1</td>
-          <td>实到人数</td>
-          <td>1</td>
-          <td>出勤工时</td>
-          <td>1</td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>应到人数</td>
+            <td>1</td>
+            <td>实到人数</td>
+            <td>1</td>
+            <td>出勤工时</td>
+            <td>1</td>
+          </ng-container>
         </tr>
         <tr>
-          <td nzLeft="0px"></td>
-          <td nzLeft="60px"></td>
-          <td nzLeft="160px"></td>
+          <td></td>
+          <td></td>
+          <td></td>
           <td></td>
           <td></td>
           <td colSpan="4">加班记录</td>
-          <td>加班工时</td>
-          <td>1</td>
-          <td>加班原因</td>
-          <td colSpan="3">1</td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>加班工时</td>
+            <td>{{abnormalWorkingHours.overtimeHours}}</td>
+            <td>加班原因</td>
+            <td colSpan="3">{{abnormalWorkingHours.overtimeReason}}</td>
+          </ng-container>
         </tr>
         <tr>
-          <td nzLeft="0px" rowSpan="2"></td>
-          <td nzLeft="60px" rowSpan="2"></td>
-          <td nzLeft="160px" rowSpan="2"></td>
+          <td rowSpan="2"></td>
+          <td rowSpan="2"></td>
+          <td rowSpan="2"></td>
           <td rowSpan="2"></td>
           <td rowSpan="2"></td>
           <td colSpan="4" rowSpan="2">其他工时统计</td>
-          <td>培训</td>
-          <td>1</td>
-          <td>会议</td>
-          <td>1</td>
-          <td>5S</td>
-          <td>1</td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>培训</td>
+            <td>{{abnormalWorkingHours.train}}</td>
+            <td>会议</td>
+            <td>{{abnormalWorkingHours.meeting}}</td>
+            <td>5S</td>
+            <td>{{abnormalWorkingHours.fiveS}}</td>
+          </ng-container>
         </tr>
         <tr>
-          <td>研发</td>
-          <td>1</td>
-          <td></td>
-          <td></td>
-          <td></td>
-          <td></td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>研发</td>
+            <td>{{abnormalWorkingHours.researchAndDevelopment}}</td>
+            <td></td>
+            <td></td>
+            <td></td>
+            <td></td>
+          </ng-container>
         </tr>
         <tr>
-          <td nzLeft="0px" rowSpan="3"></td>
-          <td nzLeft="60px" rowSpan="3"></td>
-          <td nzLeft="160px" rowSpan="3"></td>
+          <td rowSpan="3"></td>
+          <td rowSpan="3"></td>
+          <td rowSpan="3"></td>
           <td rowSpan="3"></td>
           <td rowSpan="3"></td>
           <td colSpan="4" rowSpan="3">异常工时统计</td>
-          <td>质量</td>
-          <td>1</td>
-          <td>设计</td>
-          <td>1</td>
-          <td>返工</td>
-          <td>1</td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>质量</td>
+            <td>{{abnormalWorkingHours.abnormalWorkingHours}}</td>
+            <td>设计</td>
+            <td>{{abnormalWorkingHours.design}}</td>
+            <td>返工</td>
+            <td>{{abnormalWorkingHours.rework}}</td>
+          </ng-container>
         </tr>
         <tr>
-          <td>物料</td>
-          <td>1</td>
-          <td>能源</td>
-          <td>1</td>
-          <td>其他</td>
-          <td>1</td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>物料</td>
+            <td>{{abnormalWorkingHours.materiel}}</td>
+            <td>能源</td>
+            <td>{{abnormalWorkingHours.energy}}</td>
+            <td>其他</td>
+            <td>{{abnormalWorkingHours.other}}</td>
+          </ng-container>
         </tr>
         <tr>
-          <td>设备</td>
-          <td>1</td>
-          <td>计划</td>
-          <td>1</td>
-          <td></td>
-          <td></td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td>设备</td>
+            <td>{{abnormalWorkingHours.equipment}}</td>
+            <td>计划</td>
+            <td>{{abnormalWorkingHours.plan}}</td>
+            <td></td>
+            <td></td>
+          </ng-container>
         </tr>
-        
+
         <tr>
-          <td nzLeft="0px" ></td>
-          <td nzLeft="60px"></td>
-          <td nzLeft="160px"></td>
-          <td ></td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td></td>
           <td></td>
           <td colSpan="4">异常原因描述</td>
-          <td colSpan="4">
-            质量质量质量质量质量<br>
-            质量质量质量质量质量<br>
-            质量质量质量质量质量<br>
-          </td>
+          <ng-container *ngFor="let abnormalWorkingHours of abnormalWorkingHoursList">
+            <td colSpan="4">
+              <ng-container *ngFor="let describe of abnormalWorkingHours.fbsAbnormalWorkingHoursDescribeList">
+                {{describe.describes}}<br>
+              </ng-container>
+            </td>
+          </ng-container>
         </tr>
-        
+
       </tbody>
     </nz-table>
   </div>

+ 42 - 15
src/app/routes/dashboard/analysis/analysis.component.ts

@@ -6,6 +6,8 @@ import { _HttpClient } from '@delon/theme';
 import { I18NService } from '@core';
 import { yuan } from '@shared';
 import { ProjectFileService } from 'app/services/projectFile/project-file.service';
+import { FbsWorkshopDispatchListService } from 'app/services/fbs/fbs-workshop-dispatch-list.service';
+import { FbsAbnormalWorkingHoursService } from 'app/services/fbs/fbs-abnormal-working-hours.service';
 
 @Component({
   selector: 'app-dashboard-analysis',
@@ -59,7 +61,9 @@ export class DashboardAnalysisComponent implements OnInit {
     public msg: NzMessageService,
     private i18n: I18NService,
     private cdr: ChangeDetectorRef,
-    private projectFileService: ProjectFileService
+    private projectFileService: ProjectFileService,
+    private fbsWorkshopDispatchListService:FbsWorkshopDispatchListService,
+    private fbsAbnormalWorkingHoursService:FbsAbnormalWorkingHoursService
   ) { }
 
 
@@ -86,7 +90,8 @@ export class DashboardAnalysisComponent implements OnInit {
     this.getCircleChartData();
     this.feeTotal = `&yen ${this.feeData.reduce((pre, now) => now.y + pre, 0).toFixed(2)}`;
     this.alertTotal = `&yen ${this.feeData.reduce((pre, now) => now.y + pre, 0).toFixed(2)}`;
-
+    this.getSumDispatchReport();
+    this.getAbnormalWorkingHoursReport();
   }
 
   /**
@@ -268,18 +273,40 @@ export class DashboardAnalysisComponent implements OnInit {
   }
 
 
-  listOfData=[
-    {
-      index: 0,
-      name: `1`,
-      age: "电器组装",
-      address: ``
-    },
-    {
-      index: 2,
-      name: `2`,
-      age: "机械组装",
-      address: ``
+  /**
+   * 获取报表数据
+   */
+  getSumDispatchReport(){
+    this.fbsWorkshopDispatchListService.getSumDispatchReport().then((response)=>{
+      this.listOfData=response.result;
+      //获取时间集合数据
+      this.getDateList();
+    })
+  }
+
+  /**
+   * 获取时间列集合数据
+   */
+  widthLength=0;
+  dateList=[];
+  getDateList(){
+    if(this.listOfData&&this.listOfData.length>0){
+      this.dateList=this.listOfData[0].fbsWorkshopDispatchListList
+      this.widthLength=(this.listOfData[0].fbsWorkshopDispatchListList.length*600)+710;
     }
-  ]
+  }
+
+  /**
+   * 异常工时统计
+   */
+  abnormalWorkingHoursList:any=[];
+  getAbnormalWorkingHoursReport(){
+    this.fbsAbnormalWorkingHoursService.getAbnormalWorkingHoursReport().then((response)=>{
+      this.abnormalWorkingHoursList=response.result.fbsAbnormalWorkingHoursList;
+    })
+  }
+
+
+
+  listOfData=[]
 }

+ 1 - 1
src/app/routes/fbs-abnormal-working-hours/list/list.component.html

@@ -13,7 +13,7 @@
           <nz-form-label [nzSpan]="8">姓名</nz-form-label>
           <nz-form-control [nzSpan]="16">
             <input [(ngModel)]="fbsAbnormalWorkingHours.name" name="name" nz-input
-              placeholder="{{'clinical.protocol.number'|translate}}" />
+              placeholder="请输入" />
           </nz-form-control>
         </nz-form-item>
       </div>

+ 1 - 1
src/app/routes/fbs-workshop-dispatch-list/list/list.component.html

@@ -13,7 +13,7 @@
           <nz-form-label [nzSpan]="8">姓名</nz-form-label>
           <nz-form-control [nzSpan]="16">
             <input [(ngModel)]="fbsWorkshopDispatchList.name" name="name" nz-input
-              placeholder="{{'clinical.protocol.number'|translate}}" />
+              placeholder="请输入" />
           </nz-form-control>
         </nz-form-item>
       </div>

+ 5 - 5
src/app/routes/fbs-workshop-dispatch-list/update/update.component.html

@@ -29,11 +29,11 @@
         <td>生产订单号</td>
         <td>
           <nz-select [(ngModel)]="fbsWorkshopDispatchList.productionOrderNumberId" style="width: 100%;" nzShowSearch
-            nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productionOrderNumberChange($event)">
-            <ng-container *ngFor="let productionOrderNumber of productionOrderNumberList">
-              <nz-option [nzLabel]="productionOrderNumber.mocode" [nzValue]="productionOrderNumber.moid"> </nz-option>
-            </ng-container>
-          </nz-select>
+          nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productionOrderNumberChange($event)">
+          <ng-container *ngFor="let productionOrderNumber of productionOrderNumberList">
+            <nz-option [nzLabel]="productionOrderNumber.mocode" [nzValue]="productionOrderNumber.moid"> </nz-option>
+          </ng-container>
+        </nz-select>
         </td>
         <td>产品</td>
         <td>

+ 2 - 5
src/app/routes/fbs-workshop-dispatch-list/update/update.component.ts

@@ -87,10 +87,6 @@ export class FbsWorkshopDispatchListUpdateComponent implements OnInit {
    * 生产订单号选中事件
    */
   productionOrderNumberChange(productionOrderNumberId){
-    // this.fbsWorkshopDispatchList.productionLineName="电器组装"
-    // this.fbsWorkshopDispatchList.productionOrderNumberName="SC001"
-    // this.fbsWorkshopDispatchList.product="产品001"
-    // this.fbsWorkshopDispatchList.standardWorkingHours="8";
     if(productionOrderNumberId){
       //获取生产编号
       this.productionOrderNumberList.forEach(element => {
@@ -120,7 +116,7 @@ export class FbsWorkshopDispatchListUpdateComponent implements OnInit {
   productChange(event){
     if(event){
       this.productList.forEach(element => {
-        if(element.cInvCode===event){
+        if(element.cinvcode===event){
           this.fbsWorkshopDispatchList.product=element.cinvname;
         }
       });
@@ -136,6 +132,7 @@ export class FbsWorkshopDispatchListUpdateComponent implements OnInit {
     this.fbsWorkshopDispatchListService.getById(this.id).then((response)=>{
       if(response.success){
         this.fbsWorkshopDispatchList=response.result;
+        this.productionOrderNumberChange(this.fbsWorkshopDispatchList.productionOrderNumberId);
         this.saveLoading=false;
       }else{
         this.nzNotificationService.error("查询失败",response.message);

+ 4 - 1
src/app/services/fbs/fbs-abnormal-working-hours.service.ts

@@ -66,5 +66,8 @@ export class FbsAbnormalWorkingHoursService {
     return await this.http.get<BaseResponse<Result<FbsAbnormalWorkingHoursType[]>>>('/fbsAbnormalWorkingHours/fbsAbnormalWorkingHoursType/list',{params:body}).toPromise();
   }
 
-  
+  // 查询首页异常报表
+  async getAbnormalWorkingHoursReport(): Promise<BaseResponse<FbsAbnormalWorkingHours>> {
+    return await this.http.get<BaseResponse<FbsAbnormalWorkingHours>>('/fbsAbnormalWorkingHours/fbsAbnormalWorkingHours/getAbnormalWorkingHoursReport').toPromise();
+  }
 }

+ 5 - 0
src/app/services/fbs/fbs-workshop-dispatch-list.service.ts

@@ -58,4 +58,9 @@ export class FbsWorkshopDispatchListService {
   async getInventoryGetByOrderId(moId:string): Promise<BaseResponse<any>> {
     return await this.http.get<BaseResponse<any>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/getInventoryGetByOrderId',{params:{moId:moId}}).toPromise();
   }
+
+   // 首页报表查询
+   async getSumDispatchReport(): Promise<BaseResponse<FbsWorkshopDispatchList[]>> {
+    return await this.http.get<BaseResponse<FbsWorkshopDispatchList[]>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/getSumDispatchReport').toPromise();
+  }
 }