Merge remote-tracking branch 'origin/main'

This commit is contained in:
wb_zhanghaoyuan 2025-06-24 20:31:40 +08:00
commit 92d4f9aade
11 changed files with 74 additions and 34 deletions

View File

@ -27,6 +27,7 @@ public class MaterialPageReqVO extends PageParam {
@Schema(description = "物料名称", example = "李四")
private String codeAndName;
private String inventoryName;
@Schema(description = "品牌")
private String brand;

View File

@ -29,7 +29,7 @@ public class PurchaseOrderMakeDetailSaveReqVO {
@Schema(description = "规格型号")
private String boomSpec;
private Long materialId;
@Schema(description = "系统单位")
private String boomUnit;

View File

@ -100,6 +100,7 @@ public class PurchaseOrderMakeDetailDO extends BaseDO {
* 物料需求计划id
*/
private Long projectMaterialPlanId;
private Long materialId;
/**
* 物料需求计划子项目id
*/

View File

@ -61,6 +61,13 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
.apply(!StringUtils.isEmpty(reqVO.getCodeAndName()), " (t.name like {0} or t.code like {0})", "%"+reqVO.getCodeAndName()+"%");
if (!StringUtils.isEmpty(reqVO.getInventoryName())) {
query.and(qw ->
qw.like("t.name", reqVO.getInventoryName())
.or()
.like("t.code", reqVO.getInventoryName())
);
}
// if(!StringUtils.isEmpty(reqVO.getCodeAndName())){
// query.like(MaterialDO::getName, reqVO.getCodeAndName()).or().like(MaterialDO::getCode, reqVO.getCodeAndName());
//

View File

@ -121,13 +121,7 @@ public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO>
.eq(reqVO.getBomStatus() != null, ProcessBomDO::getBomStatus, reqVO.getBomStatus())
;
if (!StringUtils.isEmpty(reqVO.getInventoryName())) {
query.and(qw ->
qw.like("t.material_name", reqVO.getInventoryName())
.or()
.like("t.material_code", reqVO.getInventoryName())
);
}
return selectPage(reqVO, query);
}
// default List<ProcessBomDetailDO> selectListByBomIdbyid(Long bomId,Long bomId) {

View File

@ -10,6 +10,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplanboom.vo.MaterialPlanBoomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
@ -36,9 +37,10 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
default PageResult<PurchaseOrderMakeDetailDO> selectPage(PurchaseOrderMakeDetailPageReqVO reqVO) {
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderMakeDetailDO.class)
.select("b.material_name as boomName","b.material_code as boomCode","b.spec as boomSpec","b.unit as boomUnit")
.select("b.material_name as boomName","m.code as boomCode","b.spec as boomSpec","b.unit as boomUnit")
.select("pom.purchase_no as purchaseNo")
.leftJoin(ProcessBomDetailDO.class,"b",ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId)
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,PurchaseOrderMakeDetailDO::getMaterialId)
.leftJoin(ProjectOrderSubDO.class,"pos",ProjectOrderSubDO::getId,PurchaseOrderMakeDetailDO::getProjectPlanSubId)
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId)
.leftJoin(PurchaseOrderMakeDO.class,"pom",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId)

View File

@ -195,11 +195,12 @@ public class ProcessBomServiceImpl implements ProcessBomService {
materialNameList.forEach((materialName, listTemp2) -> {
if (listTemp2.size() > 1) {
throw new RuntimeException("非标准件物料名称:" + materialName + "重复!");
}else{
if(listTemp2.get(0).getSpec() == null){
throw new RuntimeException("非标准件:" + materialName + "规格为空!");
}
}
// else{
// if(listTemp2.get(0).getSpec() == null){
// throw new RuntimeException("非标准件:" + materialName + "规格为空!");
// }
// }
});
});
List<ProcessBomDetailDO> processBomDetailDOList = new ArrayList<>();
@ -300,12 +301,18 @@ public class ProcessBomServiceImpl implements ProcessBomService {
// processBomDetailDO.setMaterialId(materialDO.getId());//物料ID
// processBomDetailDO.setMaterialCode(materialDO.getCode());//物料编码
// processBomDetailDO.setMaterialName(materialDO.getName());//物料名称
}else{
processBomDetailDO.setMaterialName(o.getMaterialName());
}
processBomDetailDO.setSpec(o.getSpec());//规格
if (o.getSpec() == null || o.getSpec().trim().equals("")){
processBomDetailDO.setSpec("A");//规格
}else {
processBomDetailDO.setSpec(o.getSpec());
}
processBomDetailDO.setUnit(o.getUnit());//单位
processBomDetailDO.setBlueprintNo(o.getBlueprintNo());//图号
try {

View File

@ -91,7 +91,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
pd.setPurchaseOrderId(purchaseOrderNoDO.getId());
pd.setBoomDetailId(pmd.getBoomDetailId());
pd.setBoomName(pmd.getBoomName());
pd.setMaterialId(pmd.getBoomDetailId());
pd.setMaterialId(pmd.getMaterialId());
pd.setBoomSpec(pmd.getBoomSpec());
pd.setBoomUnit(pmd.getBoomUnit());
pd.setComposition(pmd.getComposition());

View File

@ -84,12 +84,12 @@
>
<el-option
v-for="item in scope.row.materialSelectList"
:key="item.materialCode"
:label="item.inventCode"
:key="item.code"
:label="item.code"
:value="item"
>
<span style="float: left">{{ item.materialName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.materialCode }}</span>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.code }}</span>
</el-option>
</el-select>
</template>
@ -145,7 +145,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import download from '@/utils/download'
import * as purchaseOrderMakeDetailApi from '@/api/heli/purchaseordermakedetail'
import { useCommonStateWithOut } from '@/store/modules/common'
import * as bomApi from '@/api/heli/processbom'
import * as matApi from '@/api/heli/material'
import { useUserStore } from '@/store/modules/user'
import matLog from './storageLog.vue'
import * as supplierApi from '@/api/heli/supplier'
@ -236,7 +236,7 @@ const remoteMethod = async (query, row) => {
//
queryMaterialParams.inventoryName = query;
// API
const data = await bomApi.detailpages(queryMaterialParams);
const data = await matApi.getMaterialPage(queryMaterialParams);
//
row.materialSelectList = data.list;
} else {
@ -252,7 +252,7 @@ const remoteMethod = async (query, row) => {
}
};
const getMateriallist = async(row) =>{
const data = await bomApi.detailpages(queryMaterialParams)
const data = await matApi.getMaterialPage(queryMaterialParams)
row.materialSelectList = data.list
}
@ -287,10 +287,11 @@ const getMat = async (rowids,amount,ids) => {
}
const changeSupp = async(e,row) => {
if(e){
row.boomDetailId = e.id
row.boomName = e.materialName;
row.boomSpec = e.spec;
row.boomUnit = e.unit
row.materialId = e.id
row.boomCode = e.code
// row.boomName = e.materialName;
// row.boomSpec = e.spec;
// row.boomUnit = e.unit
await updateRows(row)
}
}
@ -311,6 +312,7 @@ const handleQuery = () => {
getList()
}
const opearteForm = async(type) =>{
loading.value = true;
if(type == 1){
router.push({ path: '/purchase/PurchaseOrder', query: { flush: 1 } })
return;
@ -324,10 +326,12 @@ const opearteForm = async(type) =>{
var row = ids.value[i];
if(row.orderStatus == 2){
message.error('已生成采购订单!')
loading.value = false
return
}
if(!row.boomDetailId){
message.error('零件编码不能为空!')
loading.value = false
return
}
if( !sets.has(row.supplierId) || sets == null ){
@ -336,6 +340,7 @@ const opearteForm = async(type) =>{
}
if(sets != null && sets.size > 1){
message.error('不同供应商,不能生成一个订单,请确认!');
loading.value = false
return
}
@ -348,7 +353,9 @@ const opearteForm = async(type) =>{
buyType:0
}
await purchaseOrderMakeDetailApi.updatePurchaseOrderDetail(form);
message.success("生成成功,请刷新")
loading.value = false
message.success("生成成功")
await getList();
}
}else{
message.error("至少选择一项后进行操作!")

View File

@ -265,7 +265,7 @@ const changeDate = async(e,row) => {
}
}
const serachLog = (row) => {
matLogRef.value.open(row.id,row.matCode)
matLogRef.value.open(row.id,row.matName)
}
/** 搜索按钮操作 */
const handleQuery = () => {
@ -274,29 +274,36 @@ const handleQuery = () => {
}
const opearteForm = async(type) =>{
if(ids.value != null && ids.value.length > 0){
loading.value = true
if(type == 0){
//
var isError = false;
var sets = new Set();
for(var i = 0 ; i<ids.value.length ;i++){
var row = ids.value[i];
if(!row.purchaseAmount ){
if(!row.purchaseAmount && row.purchaseAmount != 0){
message.error('零件:'+row.matName+ '采购数量不能为空!')
loading.value = false
return
} else if( row.purchaseAmount == 0){
message.error('零件:'+row.matName+ '采购数量不能为0')
loading.value = false
return
} else if(!row.supplierId){
message.error('零件:'+row.matName+ '供应商不能为空!')
loading.value = false
return
} else if(!row.estimatedPrice){
} else if(!row.estimatedPrice && row.estimatedPrice != 0){
message.error('零件:'+row.matName+ '预估总价不能为空')
loading.value = false
return
} else if( row.estimatedPrice == 0){
message.error('零件:'+row.matName+ '预估总价不能为0')
loading.value = false
return
} else if(!row.arriveTime ){
message.error('零件:'+row.matName+ '预计到货日期不能为空')
loading.value = false
return
}
if( !sets.has(row.projectId) || sets == null ){
@ -305,6 +312,7 @@ const opearteForm = async(type) =>{
}
if(sets != null && sets.size > 1){
message.error('不通项目不能同时生成采购单');
loading.value = false
return
}
@ -316,14 +324,24 @@ const opearteForm = async(type) =>{
materialPlanBoomDOList:ids.value,
buyType:0
}
try{
await materialPlanBoomApi.updateMaterialPlanBoom(form);
message.success("送审成功")
await getList()
}catch(e){
loading.value = false
}finally{
loading.value = false
}
}else{
//
for(var i = 0 ; i<ids.value.length ;i++){
var row = ids.value[i];
if(!row.materialId){
message.error('请先查询库存量后进行操作')
loading.value = false
return
}
}
@ -337,9 +355,12 @@ const opearteForm = async(type) =>{
}
await materialPlanBoomApi.updateMaterialPlanBoom(form);
message.success("去库存成功")
await getList()
loading.value = false
}
}else{
message.error("至少选择一项后进行操作!")
loading.value = false
return ;
}
}

View File

@ -174,7 +174,7 @@ const open = async (rowids,matCode) => {
clickItem.value = null;
//multipleTableRef.value!.clearSelection()
dialogVisible.value = true
queryParams.matCode = matCode;
queryParams.matName = matCode;
rowid.value = rowids
await getList();