From 848ab26f20f351dded66f6d351f4b2659636b629 Mon Sep 17 00:00:00 2001
From: z <ZhouYu0323@126.com>
Date: Fri, 28 Feb 2025 14:10:17 +0800
Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=BD=95=E5=85=A5=E5=8D=95?=
 =?UTF-8?q?=E4=BB=B7=E4=BB=A5=E5=8F=8A=E7=94=9F=E4=BA=A7=E4=BB=BB=E5=8A=A1?=
 =?UTF-8?q?=E5=8D=95=E6=89=B9=E9=87=8F=E5=BD=95=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../processbom/ProcessBomDetailDO.java        |  2 +
 .../processbom/ProcessBomDetailMapper.java    |  3 +-
 .../mysql/storagelog/StorageLogNowMapper.java |  2 +-
 .../bdgzsomthing/bdgzsomthingServiceImpl.java |  1 -
 .../processbom/ProcessBomDetailMapper.xml     |  3 +-
 .../src/views/heli/plantask/edit.vue          | 45 +++++++++++++++++--
 .../src/views/heli/storage/StorageOut.vue     | 16 ++++---
 .../src/views/heli/storage/StorageOutsp.vue   |  5 ++-
 8 files changed, 60 insertions(+), 17 deletions(-)

diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java
index 79048fc..0c85f0c 100644
--- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java
+++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/processbom/ProcessBomDetailDO.java
@@ -146,4 +146,6 @@ public class ProcessBomDetailDO extends BaseDO {
     private String sortAttr;
     @TableField(exist = false)
     private String matType;
+    @TableField(exist = false)
+    private BigDecimal price;
 }
diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java
index b09deaf..7c64fcf 100644
--- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java
+++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/processbom/ProcessBomDetailMapper.java
@@ -48,9 +48,10 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
 //                .eq(ProcessBomDetailDO::getBomId,bomId);
 //        return selectJoinList(ProcessBomDetailDO.class, query);
 //    }
-        @Select("SELECT p.*, IFNULL(SUM(s.storage_ok_qty), 0) AS storage_ok_qty " +
+        @Select("SELECT p.*, IFNULL(SUM(s.storage_ok_qty), 0) AS storage_ok_qty,COALESCE(m.price, 0) as price " +
                 "FROM pro_process_bom_detail p " +
                 "LEFT JOIN v_storage_material_now s ON p.material_id = s.id  " +
+                "LEFT JOIN base_material m ON s.id=m.id "+
                 "WHERE p.bom_id = #{bomId} and p.material_id is not null AND p.deleted IN (0, 1) " +
                 "GROUP BY p.material_code")
         List<ProcessBomDetailDO> selectStandardListByBomId(@Param("bomId") Long bomId);
diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java
index 9e25312..f0eca00 100644
--- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java
+++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/storagelog/StorageLogNowMapper.java
@@ -53,7 +53,7 @@ public interface StorageLogNowMapper extends BaseMapperX<StorageLogNowDO> {
         MPJLambdaWrapper<StorageLogNowDO> query = new MPJLambdaWrapper<>();
 
         query.selectAll(StorageLogNowDO.class)
-                .select("a.material_type as materialTypeId","a.unit as matUnitId")
+                .select("a.material_type as materialTypeId","a.unit as matUnitId","COALESCE(a.price, 0) as price")
 
                 .leftJoin(MaterialDO.class,"a",MaterialDO::getId,StorageLogNowDO::getId)
                 .orderByDesc(StorageLogNowDO::getId);
diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java
index 8972877..d0d6cd0 100644
--- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java
+++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/bdgzsomthing/bdgzsomthingServiceImpl.java
@@ -349,7 +349,6 @@ public class bdgzsomthingServiceImpl implements bdgzsomthingService {
                     //去重查询,重复则不加
                     List<bdgzsomthingDO> selecteqint = bdgzsomthingMapper.selecteqint(BdgzsomthingDO);
 
-                    System.out.println("生产任务单"+BdgzsomthingDO);
                     if(selecteqint.size()>0){
 
                     }else{
diff --git a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomDetailMapper.xml b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomDetailMapper.xml
index a8e4b1d..528ca85 100644
--- a/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomDetailMapper.xml
+++ b/mes-module-heli/mes-module-heli-biz/src/main/resources/mapper/processbom/ProcessBomDetailMapper.xml
@@ -35,7 +35,8 @@
             t.updater,
             t.deleted,
             g.material_type AS materialTypeId,
-            g.unit AS matUnitId
+            g.unit AS matUnitId,
+            COALESCE(g.price, 0) AS price
         <!-- materialType unitId lyw加的,其他之前的人写的-->
         FROM
             v_storage_material_now t
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue
index d5e9722..bd47c6d 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plantask/edit.vue
@@ -144,7 +144,8 @@
           <el-col>
             <el-card class="hl-incard">
               <el-form ref="subFormRef" :model="formData.bomDetails" :rules="subFormRules" v-loading="formLoading" label-width="0" >
-                <el-table :row-class-name="tableRowClassName" :data="formData.bomDetails"  >
+                <el-table :row-class-name="tableRowClassName" :data="formData.bomDetails"  @selection-change="handleSelectionChange">
+                  <el-table-column type="selection" width="55"   />
                   <el-table-column label="序号" type="index" min-width="50px" />
                   <el-table-column label="变更次数" prop="bomEditStatus" max-width="60px" align="center">
                     <template #default="{ row}">
@@ -206,7 +207,7 @@
                   <el-table-column min-width="80px" align="center" fixed="right">
                     <template #header><span class="hl-table_header">*</span>负责人</template>
                     <template #default="{ row}">
-                      <el-select :disabled="getDisable(row.bomEditStatus)" clearable filterable v-model="row.owner" placeholder="请选择负责人" style="width: 170px">
+                      <el-select :disabled="getDisable(row.bomEditStatus)" clearable filterable v-model="row.owner" @change="change(row)" placeholder="请选择负责人" style="width: 170px">
                       <el-option
                           v-for="item in ownerList"
                           :key="item.index"
@@ -267,7 +268,7 @@
   </el-card>
 </template>
 <script setup lang="ts">
-import { inject } from 'vue'
+import {inject, ref} from 'vue'
 import { Search, Plus } from '@element-plus/icons-vue'
 import { getIntDictOptions, getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
 import { betweenDay, formatDate, dateFormatter } from '@/utils/formatTime'
@@ -283,7 +284,7 @@ const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 const { query } = useRoute()
 const router = useRouter()
-
+const chkboxEnable = ref(0)
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 const formRef = ref() // 表单
 const subFormRef = ref() //子表单 Ref
@@ -337,6 +338,41 @@ const heliBomStatusOptions = ref<bomEditStatusEnum[]>([
   { value: 3, label: '增补' },
   { value: 4, label: '修改' },
 ]);
+const change =(row:any)=>{
+  var bomDetails = formData.value.bomDetails;
+  if (row.chkboxEnable==1){
+    for (let i = 0; i < bomDetails.length; i++) {
+      if (bomDetails[i].chkboxEnable==1&&bomDetails[i].bomEditStatus!=1){
+        bomDetails[i].owner=row.owner
+      }
+    }
+  }
+
+
+}
+const handleSelectionChange = (row: any) => {
+  var bomDetails = formData.value.bomDetails;
+  if (row.length==0) {
+    for (let i = 0; i < bomDetails.length; i++) {
+     bomDetails[i].chkboxEnable=0
+    }
+  }else if (row.length==formData.value.bomDetails.length) {
+    for (let i = 0; i < bomDetails.length; i++) {
+      bomDetails[i].chkboxEnable=1
+    }
+  }else {
+    for (let i = 0; i < bomDetails.length; i++) {
+      for (let j = 0; j < row.length; j++) {
+      if (row[j].id==bomDetails[i].id){
+        bomDetails[i].chkboxEnable=1
+       break
+      }else {
+        bomDetails[i].chkboxEnable=0
+      }
+      }
+    }
+  }
+}
 const submitForm = async (operate) => {
   // 校验表单
   await subFormRef.value.validate()
@@ -426,6 +462,7 @@ onMounted(async () => {
   formData.value.bomDetails.forEach((item) => {
     item.amount = formData.value.projectSubNum * item.amount;
     item.typeName = item.type == 1 ? '是' : '否'
+    item.chkboxEnable=0
    if(item.owner){
      item.owner = Number(item.owner)
    }
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue
index bca1c0d..8cc738c 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue
@@ -74,7 +74,7 @@ v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_STATUS)" :key="dict.valu
                     <div class="flex items-center" style="width: 100% !important;">
                       <el-input
                         v-model="formData.headerNo"
-                        
+
                         :disabled="ctrView || ctrSave || enableHeadNo"
                       />
                       <el-button
@@ -235,6 +235,7 @@ v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pn_name"
                       </el-form-item>
                     </template>
                   </el-table-column>
+                  <el-table-column prop="price" label="库存单价" min-width="120" align="center" />
                   <el-table-column prop="lotNo" min-width="120" label="批次号" align="center" v-if="false" />
                   <el-table-column prop="projectSubName"  label="子项目名称" align="center" min-width="180">
 
@@ -388,7 +389,7 @@ link type="primary" size="small" :disabled="ctrView || ctrDelete"
       <el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">提
         交</el-button>
       <el-button   @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">作
-        废</el-button> 
+        废</el-button>
 		<!-- <el-button @click="handleStatus(4)" type="success" v-if="btnCancel" size="large">审核</el-button> -->
     </div>
   </el-card>
@@ -490,7 +491,7 @@ const openMatForm = () => {
   //   return
   // }
   // formData.value.whId
-  if(formData.value.pickmode==1){  
+  if(formData.value.pickmode==1){
 	  matOpenFormRef.value.open(formData.value, 'bomfind')
 
   }else{
@@ -508,6 +509,7 @@ const openProjectForm = (scope) => {
 
 
 const getList = async (arrMat) => {
+  console.log(JSON.stringify(arrMat))
   arrMat.forEach((row) => {
     if (
       formData.value.matItemDOList.filter(
@@ -600,7 +602,7 @@ const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
     let contractNo = ''
     let property = ''
     let projectName = ''
-    
+
     for (let i = 0; i < arr.length; i++) {
       let order = arr[i]
       saleOrderIds += order.id + ','
@@ -614,7 +616,7 @@ const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
     message.alertWarning('上游单据只允许选择一个!')
   }
 }
-const deleteData = ref<StorageApi.StorageVO>(); 
+const deleteData = ref<StorageApi.StorageVO>();
 const deleteStorage = async() =>{
   await StorageApi.updateStorage(deleteData.value)
   deleteData.value.cancel = useUserStore().getUser.id
@@ -872,7 +874,7 @@ const saveFormData = async () => {
     //物料信息保存
     formData.value.matItemDOList.forEach((item) => {
       item.stockId = formData.value.id
-      item.whId = formData.value.whId 
+      item.whId = formData.value.whId
     })
     const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
     await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id)
@@ -1218,7 +1220,7 @@ onMounted(async () => {
       matEditList.value = matSimpVirtualList.value
     }
     console.log(formData.value)
-    // 页面控件可视初始化 
+    // 页面控件可视初始化
     await initStatus(formData.value.status)
 
     // 获得库区列表
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOutsp.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOutsp.vue
index 2ff5a48..67a5437 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOutsp.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOutsp.vue
@@ -223,6 +223,7 @@ v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pn_name"
                       </el-form-item>
                     </template>
                   </el-table-column>
+                  <el-table-column prop="price" label="库存单价" min-width="120" align="center" />
                   <el-table-column prop="lotNo" min-width="120" label="批次号" align="center" v-if="false" />
                   <el-table-column prop="projectSubName" label="子项目名称" align="center" min-width="180">
 
@@ -361,7 +362,7 @@ link type="primary" size="small" :disabled="ctrView || ctrDelete"
       <el-button @click="submitForm" type="success" v-if="btnSave" size="large">保
         存</el-button>
       <el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">提
-        
+
         交</el-button>
         		<el-button @click="handleStatus(4)" type="success" v-if="btnok " size="large">审核</el-button>
       <el-button @click="handleStatus(3)" type="danger" v-if="btnCancel " size="large">作
@@ -563,7 +564,7 @@ const handleStockType = async (typeid) => {
     enableHeadNo.value = true
   }
 }
-const deleteData = ref<StorageApi.StorageVO>(); 
+const deleteData = ref<StorageApi.StorageVO>();
   const deleteStorage = async() =>{
   await StorageApi.updateStorage(deleteData.value)
   deleteData.value.cancel = useUserStore().getUser.id