Parcourir la source

派工单 异常工时

chenc il y a 4 ans
Parent
commit
a4b3590814

+ 5 - 1
src/app/entity/fbs/fbs-abnormal-working-hours-describe.ts

@@ -15,5 +15,9 @@ export class FbsAbnormalWorkingHoursDescribe extends Page {
   //类型id
 	typeId?:string;
 	//类型名称
-	typeName?:string;;
+  typeName?:string;
+  //开始
+	start?:string;
+	//结束
+	end?:string;
 }

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

@@ -67,6 +67,20 @@ export class FbsAbnormalWorkingHours extends Page{
 	actualNumberOfPeople?:number;
 	/**出勤工时*/
 	attendanceHours?:number;
+	//配料
+	mixedIngredients?:string;
+	//入库
+	warehousing?:string;
+	//打包
+	pack?:string;
+	//仓库其他
+	warehouseOthers?:string;
+
+	
+	//开始
+	start?:string;
+	//结束
+	end?:string;
 
 	//类型id
 	typeId?:string;

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

@@ -20,7 +20,7 @@ export class FbsWorkshopDispatchList extends Page{
 	/**产品ID*/
 	productId?:string;
 	/**任务数量*/
-	numberOfTasks?:number;
+	numberOfTasks?:string;
 	/**标准工时*/
 	standardWorkingHours?:string;
 	/**计划开工时间*/
@@ -42,6 +42,11 @@ export class FbsWorkshopDispatchList extends Page{
 	//结束
 	end?:string;
 
+	//U8计划数量
+	plannedQuantity?:number;
+	//U8标准工时
+	standardWorkingHoursZ?:string
+
 	latestCompletedQuantity?:string;
   manHoursCompleted?:string;
   numberEfficiency?:string;

+ 27 - 2
src/app/routes/fbs-abnormal-working-hours/add/add.component.html

@@ -115,9 +115,34 @@
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>计划</td>
-        <td colSpan="4">
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr>
+        <td  rowSpan="2">仓库工时统计</td>
+        <td >配料</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.mixedIngredients" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >入库</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehousing" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >打包</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+      </tr>
+      <tr>
+        <td>其他</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehouseOthers" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td colSpan="5"></td>
       </tr>
       <tr>
         <!-- <td>改善措施</td>
@@ -162,7 +187,7 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="15%">产品</th>
+              <th nzWidth="15%">物料名称</th>
               <th nzWidth="10%">不良品数量</th>
               <th nzWidth="45%">异常原因描述</th>
               <th nzWidth="15%">异常类别</th>

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

@@ -1,6 +1,8 @@
 <page-header [action]="phActionTpl">
   <ng-template #phActionTpl>
     <button (click)="add()" nz-button nzType="primary">新建</button>
+    <button (click)="export()" nz-button nzType="primary" [nzLoading]="exportLoading">导出</button>
+    <button (click)="itemsExport()" nz-button nzType="primary" [nzLoading]="itemsExportLoading">异常明细导出</button>
   </ng-template>
 </page-header>
 <nz-card>
@@ -8,15 +10,28 @@
     <!-- 查询条件 -->
     <div nz-row [nzGutter]="{xs:12,sm:15,md:29,lg: 36, xl: 40}">
       <!-- 姓名 -->
-      <!-- <div nz-col nzXs="24" nzSm="4" nzLg="8">
+      <div nz-col nzXs="24" nzSm="4" nzLg="8">
+        <nz-form-item class="nz-form-item">
+          <nz-form-label [nzSpan]="8">派工时间范围</nz-form-label>
+          <nz-form-control [nzSpan]="16">
+            <!-- <input [(ngModel)]="fbsWorkshopDispatchList.name" name="name" nz-input
+              placeholder="请输入" /> -->
+              <nz-date-picker name="fbsWorkshopDispatchList.start" [(ngModel)]="fbsAbnormalWorkingHours.start" nzPlaceHolder="请选择" >
+              </nz-date-picker>
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+      <div nz-col nzXs="24" nzSm="4" nzLg="8">
         <nz-form-item class="nz-form-item">
-          <nz-form-label [nzSpan]="8">姓名</nz-form-label>
+          <nz-form-label [nzSpan]="8"[nzNoColon]="true"></nz-form-label>
           <nz-form-control [nzSpan]="16">
-            <input [(ngModel)]="fbsAbnormalWorkingHours.name" name="name" nz-input
-              placeholder="请输入" />
+            <!-- <input [(ngModel)]="fbsWorkshopDispatchList.name" name="name" nz-input
+              placeholder="请输入" /> -->
+              <nz-date-picker name="fbsWorkshopDispatchList.end" [(ngModel)]="fbsAbnormalWorkingHours.end" nzPlaceHolder="请选择" >
+              </nz-date-picker>
           </nz-form-control>
         </nz-form-item>
-      </div> -->
+      </div>
       <!-- 按钮 -->
       <div nz-col nzXs="24" nzSm="4" nzLg="8">
         <nz-form-item class="nz-form-item">

+ 140 - 2
src/app/routes/fbs-abnormal-working-hours/list/list.component.ts

@@ -1,6 +1,6 @@
 import { Component, OnInit, ViewChild } from '@angular/core';
 import { _HttpClient, ModalHelper } from '@delon/theme';
-import { STColumn, STComponent } from '@delon/abc';
+import { STColumn, STComponent, XlsxService } from '@delon/abc';
 import { SFSchema } from '@delon/form';
 import { FbsAbnormalWorkingHours } from 'app/entity/fbs/fbs-abnormal-working-hours';
 import { FbsAbnormalWorkingHoursAddComponent } from '../add/add.component';
@@ -8,6 +8,9 @@ import { NzDrawerService, NzNotificationService } from 'ng-zorro-antd';
 import { FbsAbnormalWorkingHoursUpdateComponent } from '../update/update.component';
 import { FbsAbnormalWorkingHoursViewComponent } from '../view/view.component';
 import { FbsAbnormalWorkingHoursService } from 'app/services/fbs/fbs-abnormal-working-hours.service';
+import { DatePipe } from '@angular/common';
+import { convertingNumbers } from '@shared/utils/shared';
+import { FbsAbnormalWorkingHoursDescribe } from 'app/entity/fbs/fbs-abnormal-working-hours-describe';
 
 @Component({
   selector: 'app-fbs-abnormal-working-hours-list',
@@ -16,7 +19,9 @@ import { FbsAbnormalWorkingHoursService } from 'app/services/fbs/fbs-abnormal-wo
 export class FbsAbnormalWorkingHoursListComponent implements OnInit {
   constructor(private nzDrawerService: NzDrawerService,
     private fbsAbnormalWorkingHoursService:FbsAbnormalWorkingHoursService,
-    private nzNotificationService: NzNotificationService) {}
+    private nzNotificationService: NzNotificationService,
+    private datePipe:DatePipe,
+    private xlsx: XlsxService) {}
 
   ngOnInit() {
     this.getList();
@@ -43,6 +48,9 @@ export class FbsAbnormalWorkingHoursListComponent implements OnInit {
    */
   getList(){
     this.isLoading=true;
+    //时间格式化
+    this.fbsAbnormalWorkingHours.start = this.datePipe.transform(this.fbsAbnormalWorkingHours.start, 'yyyy-MM-dd');
+    this.fbsAbnormalWorkingHours.end = this.datePipe.transform(this.fbsAbnormalWorkingHours.end, 'yyyy-MM-dd');
     this.fbsAbnormalWorkingHoursService.list(this.fbsAbnormalWorkingHours).then((response)=>{
       if(response.success){//查询成功
         this.dataList=response.result.records;//表格数据
@@ -141,4 +149,134 @@ export class FbsAbnormalWorkingHoursListComponent implements OnInit {
       }
     })
   }
+
+  /**
+   * 导出
+   */
+  exportLoading=false;
+  export() {
+    this.exportLoading=true;
+    //时间格式化
+    let fbsAbnormalWorkingHours = new FbsAbnormalWorkingHours();
+    fbsAbnormalWorkingHours.pageSize = 20000;
+    fbsAbnormalWorkingHours.start = this.datePipe.transform(this.fbsAbnormalWorkingHours.start, 'yyyy-MM-dd');
+    fbsAbnormalWorkingHours.end = this.datePipe.transform(this.fbsAbnormalWorkingHours.end, 'yyyy-MM-dd');
+    this.fbsAbnormalWorkingHoursService.list(fbsAbnormalWorkingHours).then(response => {
+      if (response.success) {
+        //查询成功
+        let dataList= response.result.records; //表格数据
+        let data = [];
+        let title = [
+          ['日期'], // 
+          ['应到人数'], // 
+          ['实到人数'], // 
+          ['出勤工时'], // 
+          ['加班工时'], // 
+          ['加班原因'], // 
+          ['培训'], // 
+          ['会议'], // 
+          ['5S'], // 
+          ['研发'], // 
+          ['质量'], // 
+          ['设计'], // 
+          ['返工'], // 
+          ['物料'], // 
+          ['能源'], // 
+          ['其他'], // 
+          ['设备'], // 
+          ['计划'], // 
+          ['配料'], // 
+          ['入库'], // 
+          ['打包'], // 
+          ['仓库其他'], // 
+        ];
+        data.push(title);
+        dataList.forEach(element => {
+          let row = [];
+          row.push(element.date);
+          row.push(convertingNumbers(element.numberOfPeopleToArrive));
+          row.push(convertingNumbers(element.actualNumberOfPeople));
+          row.push(convertingNumbers(element.attendanceHours));
+          row.push(convertingNumbers(element.overtimeHours));
+          row.push(element.overtimeReason);
+          row.push(convertingNumbers(element.train));
+          row.push(convertingNumbers(element.meeting));
+          row.push(convertingNumbers(element.fiveS));
+          row.push(convertingNumbers(element.researchAndDevelopment));
+          row.push(convertingNumbers(element.quality));
+          row.push(convertingNumbers(element.design));
+          row.push(convertingNumbers(element.rework));
+          row.push(convertingNumbers(element.materiel));
+          row.push(convertingNumbers(element.energy));
+          row.push(convertingNumbers(element.other));
+          row.push(convertingNumbers(element.equipment));
+          row.push(convertingNumbers(element.plan));
+          row.push(convertingNumbers(element.mixedIngredients));
+          row.push(convertingNumbers(element.warehousing));
+          row.push(convertingNumbers(element.pack));
+          row.push(convertingNumbers(element.warehouseOthers));
+          data.push(row);
+        });
+        // 导出
+        this.xlsx.export({
+          sheets: [
+            {
+              data: data,
+              name: '生产异常信息统计单导出',
+            },
+          ],
+          filename: '生产异常信息统计单导出.xlsx',
+        });
+        this.exportLoading=false;
+      }
+    });
+  }
+
+
+   /**
+   * 异常明细导出
+   */
+  itemsExportLoading=false;
+  itemsExport() {
+    this.itemsExportLoading=true;
+    //时间格式化
+    let fbsAbnormalWorkingHoursDescribe = new FbsAbnormalWorkingHoursDescribe();
+    fbsAbnormalWorkingHoursDescribe.pageSize = 20000;
+    fbsAbnormalWorkingHoursDescribe.start = this.datePipe.transform(this.fbsAbnormalWorkingHours.start, 'yyyy-MM-dd');
+    fbsAbnormalWorkingHoursDescribe.end = this.datePipe.transform(this.fbsAbnormalWorkingHours.end, 'yyyy-MM-dd');
+    this.fbsAbnormalWorkingHoursService.getListAndMain(fbsAbnormalWorkingHoursDescribe).then(response => {
+      if (response.success) {
+        //查询成功
+        let dataList= response.result; //表格数据
+        let data = [];
+        let title = [
+          ['物料名称'], // 
+          ['不良品数量'], // 
+          ['异常原因描述'], // 
+          ['异常类别'], // 
+        ];
+        data.push(title);
+        dataList.forEach(element => {
+          let row = [];
+          row.push(element.product);
+          row.push(convertingNumbers(element.rejectsNumber));
+          row.push(element.describes);
+          row.push(element.typeName);
+          data.push(row);
+        });
+        // 导出
+        this.xlsx.export({
+          sheets: [
+            {
+              data: data,
+              name: '生产异常信息统计单导出',
+            },
+          ],
+          filename: '生产异常信息统计单导出.xlsx',
+        });
+        this.itemsExportLoading=false;
+      }
+    });
+  }
+
 }

+ 27 - 2
src/app/routes/fbs-abnormal-working-hours/update/update.component.html

@@ -115,9 +115,34 @@
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.equipment" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
         <td>计划</td>
-        <td colSpan="4">
+        <td >
           <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.plan" [nzMin]="0" [nzStep]="1"></nz-input-number>
         </td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr>
+        <td  rowSpan="2">仓库工时统计</td>
+        <td >配料</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.mixedIngredients" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >入库</td>
+        <td >
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehousing" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+        <td >打包</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.pack" [nzMin]="0" [nzStep]="1"></nz-input-number>
+        </td>
+      </tr>
+      <tr>
+        <td>其他</td>
+        <td>
+          <nz-input-number [(ngModel)]="fbsAbnormalWorkingHours.warehouseOthers" [nzMin]="0" [nzStep]="1">
+          </nz-input-number>
+        </td>
+        <td colSpan="5"></td>
       </tr>
       <tr>
         <!-- <td>改善措施</td>
@@ -162,7 +187,7 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="15%">产品</th>
+              <th nzWidth="15%">物料名称</th>
               <th nzWidth="10%">不良品数量</th>
               <th nzWidth="45%">异常原因描述</th>
               <th nzWidth="15%">异常类别</th>

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

@@ -108,6 +108,28 @@
           {{fbsAbnormalWorkingHours.plan}}
         </td>
       </tr>
+      <tr>
+        <td  rowSpan="2">仓库工时统计</td>
+        <td >配料</td>
+        <td>
+          {{fbsAbnormalWorkingHours.mixedIngredients}}
+        </td>
+        <td >入库</td>
+        <td >
+          {{fbsAbnormalWorkingHours.warehousing}}
+        </td>
+        <td >打包</td>
+        <td>
+          {{fbsAbnormalWorkingHours.pack}}
+        </td>
+      </tr>
+      <tr>
+        <td>其他</td>
+        <td>
+          {{fbsAbnormalWorkingHours.warehouseOthers}}
+        </td>
+        <td colSpan="5"></td>
+      </tr>
       <!-- <tr>
         <td>改善措施</td>
         <td>当日派工产品</td>
@@ -131,7 +153,7 @@
           <thead>
             <tr>
               <th nzWidth="5%">序号</th>
-              <th nzWidth="15%">产品</th>
+              <th nzWidth="15%">物料名称</th>
               <th nzWidth="10%">不良品数量</th>
               <th nzWidth="45%">异常原因描述</th>
               <th nzWidth="15%">异常类别</th>

+ 16 - 8
src/app/routes/fbs-workshop-dispatch-list/add/add.component.html

@@ -90,13 +90,15 @@
         <tr>
           <th nzWidth="2%">序号</th>
           <th nzWidth="5%">姓名</th>
-          <th nzWidth="5%">日期</th>
+          <th nzWidth="6%">日期</th>
           <th nzWidth="6%">生产订单号</th>
-          <th nzWidth="5%">产品</th>
-          <th nzWidth="5%">任务数量</th>
+          <th nzWidth="5%">物料编码</th>
+          <th nzWidth="5%">物料名称</th>
+          <th nzWidth="5%">计划数量</th>
+          <th nzWidth="5%">派工数量</th>
           <th nzWidth="5%">标准工时</th>
-          <th nzWidth="5%">计划开工时间</th>
-          <th nzWidth="5%">计划完工时间</th>
+          <th nzWidth="6%">计划开工时间</th>
+          <th nzWidth="6%">计划完工时间</th>
           <th nzWidth="5%">备注</th>
           <th nzWidth="3%">操作</th>
         </tr>
@@ -118,22 +120,28 @@
           </td>
           <td>
             <nz-select [(ngModel)]="data.productionOrderNumberId" style="width: 100%;" nzShowSearch
-              nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productionOrderNumberChange($event,data)">
+              nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productionOrderNumberChange($event,data)" [nzDropdownMatchSelectWidth]="false">
               <ng-container *ngFor="let productionOrderNumber of productionOrderNumberList">
                 <nz-option [nzLabel]="productionOrderNumber.mocode" [nzValue]="productionOrderNumber.moid"> </nz-option>
               </ng-container>
             </nz-select>
           </td>
+          <td>
+            {{data.productId}}
+          </td>
           <td>
             <nz-select [(ngModel)]="data.productId" style="width: 200px" nzShowSearch nzAllowClear
               nzPlaceHolder="请选择" (ngModelChange)="productChange($event,data)" [nzDropdownMatchSelectWidth]="false">
               <ng-container *ngFor="let produc of data.productList">
-                <nz-option nzLabel="{{produc.cinvname}}-{{produc.qty}}" [nzValue]="produc.cinvcode"> </nz-option>
+                <nz-option nzLabel="{{produc.cinvname}}" [nzValue]="produc.cinvcode"> </nz-option>
               </ng-container>
             </nz-select>
           </td>
           <td>
-            <nz-input-number [(ngModel)]="data.numberOfTasks" [nzMin]="0" [nzStep]="1">
+            {{data.plannedQuantity}}
+          </td>
+          <td>
+            <nz-input-number [(ngModel)]="data.numberOfTasks" [nzMin]="0" [nzStep]="1" (ngModelChange)="numberOfTasksChange($event,data)">
             </nz-input-number>
           </td>
           <td>

+ 31 - 0
src/app/routes/fbs-workshop-dispatch-list/add/add.component.ts

@@ -137,11 +137,42 @@ export class FbsWorkshopDispatchListAddComponent implements OnInit {
           data.product=element.cinvname;
           
           data.rowNumber=element.sortSeq;
+          data.plannedQuantity=element.qty;
+          data.standardWorkingHoursZ=element.cinvdefine13;
+          //计算总单据剩余派工数量
+          this.getDispatchNumberByOrderIdProductId(data);
         }
       });
     }
   }
 
+  /**
+   * 计算总单据剩余派工数量
+   */
+  getDispatchNumberByOrderIdProductId(data){
+    let fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
+    fbsWorkshopDispatchList.productionOrderNumberId=data.productionOrderNumberId;
+    fbsWorkshopDispatchList.productId=data.productId;
+    this.fbsWorkshopDispatchListService.getDispatchNumberByOrderIdProductId(fbsWorkshopDispatchList).then((response)=>{
+      if(response.result){
+        data.numberOfTasks=data.plannedQuantity-response.result;
+        //计算标准工时
+        this.numberOfTasksChange(data.numberOfTasks,data);
+      }
+    })
+  }
+
+  /**
+   * 派工数量改变触发事件
+   */
+  numberOfTasksChange(event,data){
+    if(data){
+      if(data.standardWorkingHoursZ&&event){
+        data.standardWorkingHours=((data.standardWorkingHoursZ/data.plannedQuantity)*event).toFixed(2)
+      }
+    }
+  }
+
   /**
    * 保存(暂未用)
    */

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

@@ -42,6 +42,18 @@
         </nz-form-item>
       </div>
     </div>
+    <div nz-row [nzGutter]="{xs:12,sm:15,md:29,lg: 36, xl: 40}">
+      <!-- 生产订单号 -->
+      <div nz-col nzXs="24" nzSm="4" nzLg="8">
+        <nz-form-item class="nz-form-item">
+          <nz-form-label [nzSpan]="8">生产订单号</nz-form-label>
+          <nz-form-control [nzSpan]="16">
+            <input [(ngModel)]="fbsWorkshopDispatchList.productionOrderNumberName" name="productionOrderNumberName" nz-input
+              placeholder="请输入" />
+          </nz-form-control>
+        </nz-form-item>
+      </div>
+    </div>
   </form>
   <!-- 数据表 -->
   <nz-table nzSize="small" class="buttonDistance" [nzData]="dataList" [nzLoading]="isLoading"
@@ -53,7 +65,7 @@
         <th>日期</th>
         <th>生产订单号</th>
         <th>产品</th>
-        <th>任务数量</th>
+        <th>派工数量</th>
         <th>标准工时</th>
         <th>完成数量</th>
         <th>完成工时</th>

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

@@ -85,6 +85,7 @@ export class FbsWorkshopDispatchListListComponent implements OnInit {
     fbsWorkshopDispatchList.pageSize = 20000;
     fbsWorkshopDispatchList.start = this.datePipe.transform(this.fbsWorkshopDispatchList.start, 'yyyy-MM-dd');
     fbsWorkshopDispatchList.end = this.datePipe.transform(this.fbsWorkshopDispatchList.end, 'yyyy-MM-dd');
+    fbsWorkshopDispatchList.productionOrderNumberName=this.fbsWorkshopDispatchList.productionOrderNumberName;
     this.fbsWorkshopDispatchListService.list(fbsWorkshopDispatchList).then(response => {
       if (response.success) {
         //查询成功
@@ -95,8 +96,10 @@ export class FbsWorkshopDispatchListListComponent implements OnInit {
           ['姓名'], // 姓名
           ['日期'], // 日期
           ['生产订单号'], // 生产订单号
-          ['物料'], // 物料
-          ['任务数量'], // 任务数量
+          ['物料编码'], // 物料
+          ['物料名称'], // 物料名称
+          ['计划数量'], // 计划数量
+          ['派工数量'], // 派工数量
           ['标准工时'], // 标准工时
           ['完成数量'], // 完成数量
           ['完成工时'], // 完成工时
@@ -109,7 +112,9 @@ export class FbsWorkshopDispatchListListComponent implements OnInit {
           row.push(element.name);
           row.push(element.date);
           row.push(element.productionOrderNumberName);
+          row.push(element.productId);
           row.push(element.product);
+          row.push(element.plannedQuantity);
           row.push(element.numberOfTasks);
           row.push(element.standardWorkingHours);
           row.push(element.latestCompletedQuantity);

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

@@ -35,7 +35,11 @@
           </ng-container>
         </nz-select>
         </td>
-        <td>产品</td>
+        <td>物料编码</td>
+        <td>{{fbsWorkshopDispatchList.productId}}</td>
+      </tr>
+      <tr>
+        <td>物料名称</td>
         <td>
           <nz-select [(ngModel)]="fbsWorkshopDispatchList.productId" style="width: 100%;" nzShowSearch
             nzAllowClear nzPlaceHolder="请选择" (ngModelChange)="productChange($event)">
@@ -44,10 +48,12 @@
             </ng-container>
           </nz-select>
         </td>
+        <td>计划数量</td>
+        <td>{{fbsWorkshopDispatchList.plannedQuantity}}</td>
       </tr>
       <tr>
-        <td>任务数量</td>
-        <td><nz-input-number [(ngModel)]="fbsWorkshopDispatchList.numberOfTasks" [nzMin]="0" [nzStep]="1"></nz-input-number></td>
+        <td>派工数量</td>
+        <td><nz-input-number [(ngModel)]="fbsWorkshopDispatchList.numberOfTasks" [nzMin]="0" [nzStep]="1" (ngModelChange)="numberOfTasksChange($event,fbsWorkshopDispatchList)"></nz-input-number></td>
         <td>标准工时</td>
         <td><nz-input-number [(ngModel)]="fbsWorkshopDispatchList.standardWorkingHours" [nzMin]="0" [nzStep]="1"></nz-input-number></td>
       </tr>

+ 32 - 0
src/app/routes/fbs-workshop-dispatch-list/update/update.component.ts

@@ -125,11 +125,43 @@ export class FbsWorkshopDispatchListUpdateComponent implements OnInit {
           this.fbsWorkshopDispatchList.product=element.cinvname;
           this.fbsWorkshopDispatchList.projectName=element.CostItemName;
           this.fbsWorkshopDispatchList.rowNumber=element.sortSeq;
+          this.fbsWorkshopDispatchList.plannedQuantity=element.qty;
+          this.fbsWorkshopDispatchList.standardWorkingHoursZ=element.cinvdefine13;
+          //计算总单据剩余派工数量
+          this.getDispatchNumberByOrderIdProductId(this.fbsWorkshopDispatchList);
         }
       });
     }
   }
 
+   /**
+   * 计算总单据剩余派工数量
+   */
+  getDispatchNumberByOrderIdProductId(data){
+    let fbsWorkshopDispatchList=new FbsWorkshopDispatchList();
+    fbsWorkshopDispatchList.productionOrderNumberId=data.productionOrderNumberId;
+    fbsWorkshopDispatchList.productId=data.productId;
+    this.fbsWorkshopDispatchListService.getDispatchNumberByOrderIdProductId(fbsWorkshopDispatchList).then((response)=>{
+      if(response.result){
+        data.numberOfTasks=data.plannedQuantity-response.result;
+        //计算标准工时
+        this.numberOfTasksChange(data.numberOfTasks,data);
+      }
+    })
+  }
+
+
+  /**
+   * 派工数量改变触发事件
+   */
+  numberOfTasksChange(event,data){
+    if(data){
+      if(data.standardWorkingHoursZ&&event){
+        data.standardWorkingHours=((data.standardWorkingHoursZ/data.plannedQuantity)*event).toFixed(2)
+      }
+    }
+  }
+
   id="";
   /**
    * 根据id查询车间派工单

+ 8 - 2
src/app/routes/fbs-workshop-dispatch-list/view/view.component.html

@@ -22,13 +22,19 @@
         <td>
           {{fbsWorkshopDispatchList.productionOrderNumberName}}
         </td>
-        <td>产品</td>
+        <td>物料编码</td>
+        <td>{{fbsWorkshopDispatchList.productId}}</td>
+      </tr>
+      <tr>
+        <td>物料名称</td>
         <td>
           {{fbsWorkshopDispatchList.product}}
         </td>
+        <td>计划数量</td>
+        <td>{{fbsWorkshopDispatchList.plannedQuantity}}</td>
       </tr>
       <tr>
-        <td>任务数量</td>
+        <td>派工数量</td>
         <td>{{fbsWorkshopDispatchList.numberOfTasks}}</td>
         <td>标准工时</td>
         <td>{{fbsWorkshopDispatchList.standardWorkingHours}}</td>

+ 6 - 0
src/app/services/fbs/fbs-abnormal-working-hours.service.ts

@@ -80,4 +80,10 @@ export class FbsAbnormalWorkingHoursService {
   async getDispatchListByDate(date:string): Promise<BaseResponse<any>> {
     return await this.http.get<BaseResponse<any>>('/fbsAbnormalWorkingHours/fbsAbnormalWorkingHours/getDispatchListByDate',{params:{date:date}}).toPromise();
   }
+
+  //明细导出事件
+  async getListAndMain(body:any): Promise<BaseResponse<any>> {
+    return await this.http.get<BaseResponse<any>>('/fbsAbnormalWorkingHours/fbsAbnormalWorkingHoursDescribe/getListAndMain',{params:body}).toPromise();
+  }
+  
 }

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

@@ -68,4 +68,10 @@ export class FbsWorkshopDispatchListService {
   async saveBatch(body: FbsWorkshopDispatchList): Promise<BaseResponse<FbsWorkshopDispatchList>> {
     return await this.http.post<BaseResponse<FbsWorkshopDispatchList>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/workSaveBatch', body).toPromise();
   }
+
+  //根据订单号和产品查询对应的单据已近派工了多少数量
+  async getDispatchNumberByOrderIdProductId(body:any): Promise<BaseResponse<any>> {
+    return await this.http.get<BaseResponse<any>>('/fbsWorkshopDispatchList/fbsWorkshopDispatchList/getDispatchNumberByOrderIdProductId',{params:body}).toPromise();
+  }
+  
 }

+ 11 - 0
src/app/shared/utils/shared.ts

@@ -20,4 +20,15 @@ export function sort(data?: any) {
  */
 export function isHideSelectedOption(value?: any) {
   return this.listOfSelectedValue.indexOf(value) === -1;
+}
+
+/**
+ * 转数字格式
+ */
+export function convertingNumbers(value):any{
+  if(value&&!isNaN(Number(value))){
+    return Number(value);
+  }else{
+    return value;
+  }
 }