Commit c875a4b0 authored by 刘帅's avatar 刘帅

1.物料新增生产厂家

2.出入库数量、单价可以输两位小数
parent abf70a0c
......@@ -92,6 +92,10 @@ public class ErpMaterial extends BaseEntity {
* 物资品牌
*/
private String materialBrand;
/**
* 生产厂家
*/
private String manufacturer;
/**
* 采购标的
*/
......
......@@ -114,6 +114,10 @@ public class ErpMaterialBo extends BaseEntity {
* 物资品牌
*/
private String materialBrand;
/**
* 生产厂家
*/
private String manufacturer;
/**
* 采购标的
*/
......
......@@ -122,6 +122,11 @@ public class ErpMaterialVo implements Serializable {
*/
@ExcelProperty(value = "物资品牌")
private String materialBrand;
/**
* 生产厂家
*/
@ExcelProperty(value = "生产厂家")
private String manufacturer;
/**
* 采购标的
*/
......
......@@ -84,21 +84,21 @@ public class ErpMaterialImportListener extends AnalysisEventListener<ErpMaterial
}
}
/**
* 物资类型
* 物资类型(弃用)
*/
if (StringUtils.isNotEmpty(material.getMaterialTypeName())) {
List<ErpMaterialType> materialTypes = materialTypeMapper.selectList(new LambdaQueryWrapper<ErpMaterialType>().eq(ErpMaterialType::getTypeName, material.getMaterialTypeName()));
if (materialTypes.isEmpty()) {
ErpMaterialType materialType = new ErpMaterialType();
materialType.setTypeName(material.getMaterialTypeName());
materialType.setParentId(1L);
materialType.setAncestors("0,1");
materialTypeMapper.insert(materialType);
material.setMaterialTypeId(materialType.getTypeId());
}else {
material.setMaterialTypeId(materialTypes.get(0).getTypeId());
}
}
// if (StringUtils.isNotEmpty(material.getMaterialTypeName())) {
// List<ErpMaterialType> materialTypes = materialTypeMapper.selectList(new LambdaQueryWrapper<ErpMaterialType>().eq(ErpMaterialType::getTypeName, material.getMaterialTypeName()));
// if (materialTypes.isEmpty()) {
// ErpMaterialType materialType = new ErpMaterialType();
// materialType.setTypeName(material.getMaterialTypeName());
// materialType.setParentId(1L);
// materialType.setAncestors("0,1");
// materialTypeMapper.insert(materialType);
// material.setMaterialTypeId(materialType.getTypeId());
// }else {
// material.setMaterialTypeId(materialTypes.get(0).getTypeId());
// }
// }
/**
* 供应商
*/
......@@ -114,22 +114,22 @@ public class ErpMaterialImportListener extends AnalysisEventListener<ErpMaterial
}
}
/**
* 仓库货位
* 仓库货位(弃用)
*/
if (StringUtils.isNotEmpty(material.getWarehouseLocationType())) {
ErpWarehouseLocation warehouseLocation = warehouseLocationMapper.selectOne(new LambdaQueryWrapper<ErpWarehouseLocation>().eq(ErpWarehouseLocation::getLocationType, material.getWarehouseLocationType()));
if (ObjectUtil.isNull(warehouseLocation)) {
ErpWarehouseLocation location = new ErpWarehouseLocation();
location.setLocationCode(material.getWarehouseLocationType());
location.setLocationType(material.getWarehouseLocationType());
warehouseLocationMapper.insert(location);
material.setWarehouseLocationCode(location.getLocationCode());
material.setWarehouseLocationId(location.getId());
} else {
material.setWarehouseLocationCode(warehouseLocation.getLocationCode());
material.setWarehouseLocationId(warehouseLocation.getId());
}
}
// if (StringUtils.isNotEmpty(material.getWarehouseLocationType())) {
// ErpWarehouseLocation warehouseLocation = warehouseLocationMapper.selectOne(new LambdaQueryWrapper<ErpWarehouseLocation>().eq(ErpWarehouseLocation::getLocationType, material.getWarehouseLocationType()));
// if (ObjectUtil.isNull(warehouseLocation)) {
// ErpWarehouseLocation location = new ErpWarehouseLocation();
// location.setLocationCode(material.getWarehouseLocationType());
// location.setLocationType(material.getWarehouseLocationType());
// warehouseLocationMapper.insert(location);
// material.setWarehouseLocationCode(location.getLocationCode());
// material.setWarehouseLocationId(location.getId());
// } else {
// material.setWarehouseLocationCode(warehouseLocation.getLocationCode());
// material.setWarehouseLocationId(warehouseLocation.getId());
// }
// }
materialMapper.insert(material);
successNum++;
successMsg.append("<br/>").append(successNum).append("、物料 【").append(material.getMaterialName()).append("】 导入成功");
......@@ -141,19 +141,19 @@ public class ErpMaterialImportListener extends AnalysisEventListener<ErpMaterial
/**
* 物资类型
*/
if (StringUtils.isNotEmpty(material.getMaterialTypeName())) {
List<ErpMaterialType> materialTypes = materialTypeMapper.selectList(new LambdaQueryWrapper<ErpMaterialType>().eq(ErpMaterialType::getTypeName, material.getMaterialTypeName()));
if (materialTypes.isEmpty()) {
ErpMaterialType materialType = new ErpMaterialType();
materialType.setTypeName(material.getMaterialTypeName());
materialType.setParentId(1L);
materialType.setAncestors("0,1");
materialTypeMapper.insert(materialType);
material.setMaterialTypeId(materialType.getTypeId());
}else {
material.setMaterialTypeId(materialTypes.get(0).getTypeId());
}
}
// if (StringUtils.isNotEmpty(material.getMaterialTypeName())) {
// List<ErpMaterialType> materialTypes = materialTypeMapper.selectList(new LambdaQueryWrapper<ErpMaterialType>().eq(ErpMaterialType::getTypeName, material.getMaterialTypeName()));
// if (materialTypes.isEmpty()) {
// ErpMaterialType materialType = new ErpMaterialType();
// materialType.setTypeName(material.getMaterialTypeName());
// materialType.setParentId(1L);
// materialType.setAncestors("0,1");
// materialTypeMapper.insert(materialType);
// material.setMaterialTypeId(materialType.getTypeId());
// }else {
// material.setMaterialTypeId(materialTypes.get(0).getTypeId());
// }
// }
/**
* 物资仓库
*/
......@@ -186,18 +186,18 @@ public class ErpMaterialImportListener extends AnalysisEventListener<ErpMaterial
/**
* 仓库货位
*/
if (StringUtils.isNotEmpty(material.getWarehouseLocationType())) {
ErpWarehouseLocation warehouseLocation = warehouseLocationMapper.selectOne(new LambdaQueryWrapper<ErpWarehouseLocation>().eq(ErpWarehouseLocation::getLocationType, material.getWarehouseLocationType()));
if (ObjectUtil.isNull(warehouseLocation)) {
ErpWarehouseLocation location = new ErpWarehouseLocation();
location.setLocationCode(material.getWarehouseLocationType());
location.setLocationType(material.getWarehouseLocationType());
warehouseLocationMapper.insert(location);
material.setWarehouseLocationId(location.getId());
} else {
material.setWarehouseLocationId(warehouseLocation.getId());
}
}
// if (StringUtils.isNotEmpty(material.getWarehouseLocationType())) {
// ErpWarehouseLocation warehouseLocation = warehouseLocationMapper.selectOne(new LambdaQueryWrapper<ErpWarehouseLocation>().eq(ErpWarehouseLocation::getLocationType, material.getWarehouseLocationType()));
// if (ObjectUtil.isNull(warehouseLocation)) {
// ErpWarehouseLocation location = new ErpWarehouseLocation();
// location.setLocationCode(material.getWarehouseLocationType());
// location.setLocationType(material.getWarehouseLocationType());
// warehouseLocationMapper.insert(location);
// material.setWarehouseLocationId(location.getId());
// } else {
// material.setWarehouseLocationId(warehouseLocation.getId());
// }
// }
materialMapper.updateById(material);
successNum++;
successMsg.append("<br/>").append(successNum).append("、物料 ").append(material.getMaterialName()).append(" 更新成功");
......
......@@ -89,7 +89,7 @@ public class ErpMaterialInventoryRecordServiceImpl implements IErpMaterialInvent
.like(StringUtils.isNotBlank(bo.getMaterialCode()),"t.material_code", bo.getMaterialCode())
.like(null != bo.getVendorId(),"t.vendor_id", bo.getVendorId())
.like(null != bo.getWarehouseId(), "t.warehouse_id", bo.getWarehouseId())
.in(!bo.getWarehouseIdList().isEmpty(), "t.warehouse_id", bo.getWarehouseIdList())
.in(null != bo.getWarehouseIdList(), "t.warehouse_id", bo.getWarehouseIdList())
.ge(null != bo.getInventory(), "t.inventory", bo.getInventory())
.orderByDesc("t.create_time");
Page<ErpMaterialInventoryRecordVo> queryPageList = baseMapper.customQueryPageInventoryList(pageQuery.build(), query);
......
......@@ -138,27 +138,28 @@
<el-table-column label="物资编码" align="center" fixed="left" prop="materialCode" />
<el-table-column label="物资名称" align="center" fixed="left" prop="materialName" />
<el-table-column label="物资规格" align="center" fixed="left" prop="materialSpecifications" />
<el-table-column label="供应商" align="center" fixed="left" prop="vendorName" show-overflow-tooltip />
<el-table-column label="物资品牌" align="center" fixed="left" prop="materialBrand" />
<el-table-column label="物资单位" align="center" fixed="left" prop="materialUnit">
<el-table-column label="生产厂家" align="center" fixed="left" prop="manufacturer" />
<el-table-column label="采购标的" align="center" prop="procurementSubject" />
<el-table-column label="物资单位" align="center" prop="materialUnit" width="50">
<template slot-scope="scope">
<dict-tag :options="dict.type.material_unit" :value="scope.row.materialUnit" />
</template>
</el-table-column>
<!-- <el-table-column label="所在仓库" align="center" prop="warehouseName" />-->
<!-- <el-table-column label="分类名称" align="center" prop="materialTypeName" />-->
<el-table-column label="供应商" align="center" prop="vendorName" show-overflow-tooltip />
<el-table-column label="采购标的" align="center" prop="procurementSubject" />
<el-table-column label="适用车型" align="center" prop="compatibleWith" />
<el-table-column label="物资图片" align="center" prop="materialUrl">
<template slot-scope="scope">
<image-preview :src="scope.row.materialUrl" style="width: 50px; height: 50px" />
</template>
</el-table-column>
<el-table-column label="质保期(月)" align="center" prop="materialWarrantyPeriod" />
<el-table-column label="参考价" align="center" prop="referencePrice" />
<el-table-column label="销售价" align="center" prop="sellingPrice" />
<el-table-column label="质保期(月)" align="center" prop="materialWarrantyPeriod" width="60" />
<el-table-column label="参考价" align="center" prop="referencePrice" width="80" />
<el-table-column label="销售价" align="center" prop="sellingPrice" width="80" />
<!-- <el-table-column label="库存" align="center" prop="inventory" />-->
<el-table-column label="是否启用" align="center" prop="isEnable">
<el-table-column label="是否启用" align="center" prop="isEnable" width="50">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_is_enable" :value="scope.row.isEnable"/>
</template>
......@@ -168,7 +169,7 @@
<!-- <dict-tag :options="dict.type.sys_is_enable" :value="String(scope.row.isCheck)"/>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="是否通用" align="center" prop="isUniversal">
<el-table-column label="是否通用" align="center" prop="isUniversal" width="50">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_is_enable" :value="scope.row.isUniversal"/>
</template>
......@@ -202,7 +203,7 @@
/>
<!-- 添加或修改物资对话框 -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="8">
......@@ -236,14 +237,14 @@
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="供应商" prop="vendorId">
<el-select v-model="form.vendorId" placeHolder="请选择供应商">
<el-select v-model="form.vendorId" placeHolder="请选择供应商" style="width: 100%" >
<el-option v-for="item in materialVendorList" :key="item.id" :value="item.id" :label="item.vendorName" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="物资单位" prop="materialUnit">
<el-select v-model="form.materialUnit" placeHolder="请选择物资单位">
<el-select v-model="form.materialUnit" placeHolder="请选择物资单位" style="width: 100%" >
<el-option v-for="dict in dict.type.material_unit" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
......@@ -281,10 +282,8 @@
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="是否启用" prop="isEnable">
<el-select v-model="form.isEnable" style="width: 100%" placeholder="请选择是否启用">
<el-option v-for="dict in dict.type.sys_is_enable" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
<el-form-item label="生产厂家" prop="manufacturer">
<el-input v-model="form.manufacturer" placeholder="请输入生产厂家" />
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -304,6 +303,13 @@
<!-- <el-input-number v-model="form.inventory" :min="0" style="width: 100%" :disabled="form.id != null" placeholder="请输入库存数量" />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="是否启用" prop="isEnable">
<el-select v-model="form.isEnable" style="width: 100%" placeholder="请选择是否启用">
<el-option v-for="dict in dict.type.sys_is_enable" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否通用" prop="isUniversal">
<el-select v-model="form.isUniversal" style="width: 100%" placeholder="请选择是否通用">
......@@ -414,8 +420,7 @@ export default {
materialSpecifications: undefined,
materialUnit: undefined,
materialWarrantyPeriod: undefined,
referencePrice: undefined,
sellingPrice: undefined,
manufacturer: undefined,
inventory: undefined,
isEnable: undefined,
isUniversal: undefined,
......@@ -545,6 +550,7 @@ export default {
materialSpecifications: undefined,
materialUnit: undefined,
materialBrand: undefined,
manufacturer: undefined,
procurementSubject: undefined,
compatibleWith: undefined,
materialUrl: undefined,
......
......@@ -86,7 +86,7 @@
<el-table-column label="库存" align="center" prop="inventory" />
<el-table-column label="领料数量" align="center" prop="collectNumber" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.collectNumber" @change="collectNumberChange" controls-position="right" size="mini" :min="1" :precision="0" style="width: 100%" placeholder="数量"/>
<el-input-number v-model="scope.row.collectNumber" @change="collectNumberChange" controls-position="right" size="mini" :min="0.01" :precision="2" :max="parseFloat(scope.row.inventory)" style="width: 100%" placeholder="数量"/>
</template>
</el-table-column>
<!-- <el-table-column label="销售单价" align="center" prop="price" width="120px">-->
......@@ -96,7 +96,7 @@
<!-- </el-table-column>-->
<el-table-column label="领料金额" align="center" prop="money" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.money" disabled controls-position="right" size="mini" :min="0" style="width: 100%" placeholder="金额"/>
<el-input-number v-model="scope.row.money" disabled controls-position="right" size="mini" :precision="2" style="width: 100%" placeholder="金额"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
......@@ -260,7 +260,7 @@ export default {
};
},
created() {
this.form = {...this.$route.query}
this.form = {...this.$route.query, outMoney: undefined}
this.getWarehouseList(this.form.repairerDeptId)
this.getVendorList()
},
......@@ -289,7 +289,9 @@ export default {
},
/** 供应商改变 */
vendorIdChange(vendorId) {
this.queryMaterialParams.vendorId = vendorId;
if (vendorId) {
this.queryMaterialParams.vendorId = vendorId;
}
this.form.pickingInfoList = []
},
/** 打开物料列表 */
......@@ -348,6 +350,7 @@ export default {
item.money = item.collectNumber * item.sellingPrice
return sum + (item.collectNumber * item.sellingPrice);
}, 0)
console.log('outMoney', this.form.outMoney)
},
// 多选框选中数据
handleMaterialSelectionChange(selection) {
......
......@@ -274,7 +274,7 @@
<el-table-column label="库存" align="center" prop="inventory" />
<el-table-column label="领料数量" align="center" prop="collectNumber" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.collectNumber" @change="collectNumberChange" controls-position="right" size="mini" :min="1" :max="parseInt(scope.row.inventory)" :precision="0" style="width: 100%" placeholder="数量"/>
<el-input-number v-model="scope.row.collectNumber" @change="collectNumberChange" controls-position="right" size="mini" :min="0.01" :precision="2" :max="parseFloat(scope.row.inventory)" style="width: 100%" placeholder="数量"/>
</template>
</el-table-column>
<!-- <el-table-column label="销售单价" align="center" prop="price" width="120px">-->
......@@ -284,7 +284,7 @@
<!-- </el-table-column>-->
<el-table-column label="领料金额" align="center" prop="money" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.money" disabled controls-position="right" size="mini" :min="0" style="width: 100%" placeholder="金额"/>
<el-input-number v-model="scope.row.money" disabled controls-position="right" size="mini" :precision="2" style="width: 100%" placeholder="金额"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
......@@ -612,8 +612,8 @@ export default {
// 入库数量变动
collectNumberChange() {
this.form.outMoney = this.form.pickingInfoList.reduce((sum, item) => {
item.money = item.collectNumber * item.price
return sum + (item.collectNumber * item.price);
item.money = item.collectNumber * item.sellingPrice
return sum + (item.collectNumber * item.sellingPrice);
}, 0)
},
// 多选框选中数据
......
......@@ -119,7 +119,7 @@
<el-row>
<el-col :span="6">
<el-form-item label="供应商" prop="vendorId">
<el-select v-model="form.vendorId" placeHolder="请选择供应商" filterable @change="vendorIdChange" style="width: 100%">
<el-select v-model="form.vendorId" placeHolder="请选择供应商" filterable style="width: 100%">
<el-option v-for="item in materialVendorOpt" :key="item.id" :value="item.id" :label="item.vendorName" />
</el-select>
</el-form-item>
......
......@@ -266,17 +266,17 @@
<el-table-column label="销售价" align="center" prop="sellingPrice" width="80"/>
<el-table-column label="入库数量" align="center" prop="putawayNumber" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.putawayNumber" @change="putawayChange" controls-position="right" size="mini" :min="1" :precision="0" style="width: 100%" placeholder="数量"/>
<el-input-number v-model="scope.row.putawayNumber" @change="putawayChange" controls-position="right" size="mini" :min="0.01" :precision="2" style="width: 100%" placeholder="数量"/>
</template>
</el-table-column>
<el-table-column label="入库单价" align="center" prop="putawayPrice" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.putawayPrice" @change="putawayChange" controls-position="right" size="mini" :min="1" :precision="2" style="width: 100%" placeholder="单价"/>
<el-input-number v-model="scope.row.putawayPrice" @change="putawayChange" controls-position="right" size="mini" :min="0.01" :precision="2" style="width: 100%" placeholder="单价"/>
</template>
</el-table-column>
<el-table-column label="入库金额" align="center" prop="putawayMoney" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.putawayMoney" disabled controls-position="right" size="mini" :min="1" style="width: 100%" placeholder="金额"/>
<el-input-number v-model="scope.row.putawayMoney" disabled controls-position="right" size="mini" :precision="2" style="width: 100%" placeholder="金额"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="50">
......@@ -712,6 +712,19 @@ export default {
this.buttonLoading = false;
return
}
let vendorIsNull = false
this.form.putawayInfoList.forEach(item =>{
if (!item.vendorId) {
vendorIsNull = true
}
})
if (vendorIsNull) {
this.$modal.msgError('入库明细列表物料供应商不能为空')
this.buttonLoading = false;
return
}
this.form.putawayInfoList.forEach(item =>{
item.materialId = item.materialId || item.id
})
......
......@@ -242,7 +242,7 @@
</el-table-column>
<el-table-column label="退货数量" align="center" prop="returnsNumber" width="120px">
<template slot-scope="scope">
<el-input-number v-model="scope.row.returnsNumber" @change="returnsNumberChange" controls-position="right" size="mini" :min="0" :max="scope.row.putawayNumber - scope.row.returnedNumber - scope.row.issuedNumber" :precision="0" style="width: 100%" placeholder="数量"/>
<el-input-number v-model="scope.row.returnsNumber" @change="returnsNumberChange" controls-position="right" size="mini" :min="0" :precision="2" :max="parseFloat(scope.row.putawayNumber) - parseFloat(scope.row.returnedNumber) - parseFloat(scope.row.issuedNumber)" style="width: 100%" placeholder="数量"/>
</template>
</el-table-column>
<el-table-column label="退货单价" align="center" prop="returnsPrice" width="120px">
......@@ -400,15 +400,15 @@ export default {
// 退货数量更改
returnsNumberChange() {
this.form.returnsMoney = this.materialList.reduce((sum, item) => {
item.returnsMoney = item.returnsNumber * item.returnsPrice
return sum + (item.returnsNumber * item.returnsPrice);
item.returnsMoney = parseFloat(item.returnsNumber) * parseFloat(item.returnsPrice)
return sum + (parseFloat(item.returnsNumber) * parseFloat(item.returnsPrice));
}, 0)
},
// 入库明细删除
handleRowDelete(row) {
this.materialList = this.materialList.filter(item => item.id !== row.id);
this.form.returnsMoney = this.materialList.reduce((sum, item) => {
return sum + (item.returnsNumber * item.returnsPrice);
return sum + (parseFloat(item.returnsNumber) * parseFloat(item.returnsPrice));
}, 0)
},
// 取消按钮
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment