rev: 半成品出入库

add:半成品库存
This commit is contained in:
2023-06-17 16:11:48 +08:00
parent 804ecd9b74
commit 001665e7a5
22 changed files with 356 additions and 72 deletions

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.CpIvtQuery;
import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery; import org.nl.wms.storage_manage.rawmanage.service.structIvt.dto.StructIvtYLQuery;
import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService; import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery; import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StructIvtBcpQuery;
@@ -28,6 +29,14 @@ public class StIvtStructivtBcpController {
@Autowired @Autowired
private IStIvtStructivtBcpService bcpService; private IStIvtStructivtBcpService bcpService;
@GetMapping
@Log("半成品库存查询")
@ApiOperation("半成品库存查询")
public ResponseEntity<Object> query(StructIvtBcpQuery query, PageQuery page) {
return new ResponseEntity<>(bcpService.packageQuery(query,page), HttpStatus.OK);
}
@GetMapping("/getBcpIvt") @GetMapping("/getBcpIvt")
@Log("查询可用的半成品库存") @Log("查询可用的半成品库存")
@ApiOperation("查询可用的半成品库存") @ApiOperation("查询可用的半成品库存")

View File

@@ -6,10 +6,14 @@
dtl.*, dtl.*,
mater.material_code, mater.material_code,
mater.material_name, mater.material_name,
mater.material_spec mater.material_spec,
task.task_code,
task.task_status,
(dtl.unit_weight * dtl.plan_qty) AS weight_qty
FROM FROM
st_ivt_iostorinv_bcp dtl st_ivt_iostorinv_bcp dtl
LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
LEFT JOIN sch_base_task task ON task.task_id = dtl.task_id
<where> <where>
dtl.is_delete = false dtl.is_delete = false
<if test="query.stor_id != null and query.stor_id != ''"> <if test="query.stor_id != null and query.stor_id != ''">
@@ -19,10 +23,10 @@
and dtl.iostorinv_id = #{query.iostorinv_id} and dtl.iostorinv_id = #{query.iostorinv_id}
</if> </if>
<if test="query.bill_code != null and query.bill_code != ''"> <if test="query.bill_code != null and query.bill_code != ''">
and dtl.bill_code like %${query.bill_code}% and dtl.bill_code like #{query.bill_code}
</if> </if>
<if test="query.bill_type != null and query.bill_type != ''"> <if test="query.bill_type != null and query.bill_type != ''">
and dtl.bill_type like %${query.bill_type}% and dtl.bill_type like #{query.bill_type}
</if> </if>
<if test="query.bill_status != null and query.bill_status != ''"> <if test="query.bill_status != null and query.bill_status != ''">
and dtl.bill_status = #{query.bill_status} and dtl.bill_status = #{query.bill_status}

View File

@@ -197,10 +197,18 @@ public class StIvtIostorinvBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvB
.set(StIvtStructattr::getInv_code,"") .set(StIvtStructattr::getInv_code,"")
.set(StIvtStructattr::getStoragevehicle_code, "")); .set(StIvtStructattr::getStoragevehicle_code, ""));
// 更新任务为完成
iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getTask_id, mst.getTask_id())
);
return null; return null;
} }
@Override @Override
@Transactional
public String confirmTask(JSONObject form) { public String confirmTask(JSONObject form) {
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空"); Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id")); StIvtIostorinvBcp mst = this.getById(form.getString("iostorinv_id"));

View File

@@ -182,6 +182,13 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
.set(StIvtStructattr::getInv_code, "") .set(StIvtStructattr::getInv_code, "")
.set(StIvtStructattr::getStoragevehicle_code, mst.getStoragevehicle_code())); .set(StIvtStructattr::getStoragevehicle_code, mst.getStoragevehicle_code()));
// 更新任务为完成
iSchBaseTaskService.update(
new UpdateWrapper<SchBaseTask>().lambda()
.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.eq(SchBaseTask::getTask_id, mst.getTask_id())
);
/*structivtflowService.recordStructivtFlow( /*structivtflowService.recordStructivtFlow(
StIvtStructivtflowDto.builder() StIvtStructivtflowDto.builder()
.bill_code(mst.getBill_code()).change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM).bill_table("st_ivt_iostorinv_bcp") .bill_code(mst.getBill_code()).change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM).bill_table("st_ivt_iostorinv_bcp")

View File

@@ -36,4 +36,5 @@ public interface IStIvtStructivtBcpService extends IService<StIvtStructivtBcp> {
List<Map> getBcpIvtInfo(JSONObject jo); List<Map> getBcpIvtInfo(JSONObject jo);
Object packageQuery(StructIvtBcpQuery query, PageQuery page);
} }

View File

@@ -28,5 +28,6 @@ public interface StIvtStructivtBcpMapper extends BaseMapper<StIvtStructivtBcp> {
List<Map> getStructIvtInfo(@Param("map") Map map); List<Map> getStructIvtInfo(@Param("map") Map map);
List<Map> packageQuery(@Param("query") StructIvtBcpQuery query);
} }

View File

@@ -25,6 +25,7 @@
mu.unit_name AS qty_unit_name, mu.unit_name AS qty_unit_name,
mb.material_code, mb.material_code,
mb.material_name, mb.material_name,
mb.material_spec,
sa.sect_id, sa.sect_id,
sa.sect_code, sa.sect_code,
sa.sect_name, sa.sect_name,
@@ -42,7 +43,9 @@
AND AND
sa.lock_type = '0' sa.lock_type = '0'
<if test="query.material_search != null and query.material_search != ''"> <if test="query.material_search != null and query.material_search != ''">
and (mb.material_code = #{query.material_search} OR mb.material_name = #{query.material_search}) and (mb.material_code = #{query.material_search} OR
mb.material_name = #{query.material_search} OR
mb.material_spec = #{query.material_search})
</if> </if>
<if test="query.sect_id != null and query.sect_id != ''"> <if test="query.sect_id != null and query.sect_id != ''">
and sa.sect_id = #{query.sect_id} and sa.sect_id = #{query.sect_id}
@@ -109,4 +112,41 @@
</where> </where>
</select> </select>
<select id="packageQuery" resultType="java.util.Map">
SELECT
ivt.*,
mater.material_code,
mater.material_name,
mater.material_spec,
unit.unit_name,
attr.struct_name,
attr.sect_code,
attr.sect_name,
attr.storagevehicle_code
FROM
st_ivt_structivt_bcp ivt
LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
<where>
1=1
<if test="query.material_code!= null and query.material_code != ''">
and mater.material_code LIKE #{query.material_code} or
(mater.material_name LIKE #{query.material_code}) or
(mater.material_spec LIKE #{query.material_code})
</if>
<if test="query.struct_code!= null and query.struct_code != ''">
and attr.struct_code LIKE #{query.struct_code} or
(attr.struct_name LIKE #{query.struct_code})
</if>
<if test="query.start_time!= null and query.start_time != ''">
and ivt.instorage_time &gt;= #{query.start_time}
</if>
<if test="query.end_time!= null and query.end_time != ''">
and ivt.instorage_time &lt;= #{query.end_time}
</if>
</where>
order by ivt.instorage_time DESC,attr.struct_code ASC
</select>
</mapper> </mapper>

View File

@@ -20,6 +20,10 @@ public class StructIvtBcpQuery extends BaseQuery<StIvtStructivtBcp> {
private String material_search; private String material_search;
private String material_code;
private String struct_code;
private Boolean is_delete = false; private Boolean is_delete = false;

View File

@@ -42,6 +42,15 @@ public class StIvtStructivtBcpServiceImpl extends ServiceImpl<StIvtStructivtBcpM
return this.baseMapper.getBcpIvtInfo(jo); return this.baseMapper.getBcpIvtInfo(jo);
} }
@Override
public Object packageQuery(StructIvtBcpQuery query, PageQuery pageQuery) {
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
TableDataInfo build = TableDataInfo.build(this.baseMapper.packageQuery(query));
build.setTotalElements(page.getTotal());
return build;
}
@Override @Override
public Object getBcpIvt(StructIvtBcpQuery query, PageQuery pageQuery) { public Object getBcpIvt(StructIvtBcpQuery query, PageQuery pageQuery) {
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());

View File

@@ -73,17 +73,17 @@
<span class="crud-opts-right2"> <span class="crud-opts-right2">
<!--左侧插槽--> <!--左侧插槽-->
<slot name="left" /> <slot name="left" />
<el-button <!-- <el-button-->
slot="left" <!-- slot="left"-->
class="filter-item" <!-- class="filter-item"-->
type="primary" <!-- type="primary"-->
icon="el-icon-plus" <!-- icon="el-icon-plus"-->
size="mini" <!-- size="mini"-->
:disabled="add_flag" <!-- :disabled="add_flag"-->
@click="sendTask" <!-- @click="sendTask"-->
> <!-- >-->
下发任务 <!-- 下发任务-->
</el-button> <!-- </el-button>-->
<el-button <el-button
slot="left" slot="left"
class="filter-item" class="filter-item"

View File

@@ -147,7 +147,6 @@
<el-table-column prop="point_code2" label="目的位置" align="center" /> <el-table-column prop="point_code2" label="目的位置" align="center" />
<el-table-column prop="task_code" label="任务号" align="center" /> <el-table-column prop="task_code" label="任务号" align="center" />
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/> <el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
<el-table-column prop="task_type" label="任务类型" align="center" width="150px" :formatter="formatType"/>
</el-table> </el-table>
</el-card> </el-card>
</el-dialog> </el-dialog>
@@ -257,9 +256,6 @@ export default {
formatStatus(row) { formatStatus(row) {
return this.dict.label.task_status[row.task_status] return this.dict.label.task_status[row.task_status]
}, },
formatType(row) {
return this.dict.label.SCH_TASK_TYPE_DTL[row.task_type]
},
formatBaseType(row) { formatBaseType(row) {
return this.dict.label.PCS_SAL_TYPE[row.base_bill_type] return this.dict.label.PCS_SAL_TYPE[row.base_bill_type]
} }

View File

@@ -16,7 +16,7 @@
v-model="query.stor_id" v-model="query.stor_id"
clearable clearable
size="mini" size="mini"
placeholder="单据状态" placeholder="所属仓库"
class="filter-item" class="filter-item"
@change="crud.toQuery" @change="crud.toQuery"
> >

View File

@@ -111,9 +111,11 @@
<el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column prop="pcsn" label="订单号" width="150" align="center" /> <el-table-column prop="pcsn" label="批次" width="150" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" />
<el-table-column prop="qty_unit_name" label="单位" align="center" /> <el-table-column prop="qty_unit_name" label="单位" align="center" />
<el-table-column show-overflow-tooltip prop="source_bill_type" label="源单类型" :formatter="formatBaseType" align="center" />
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单号" align="center" />
<el-table-column show-overflow-tooltip prop="remark" label="明细备注" align="center" /> <el-table-column show-overflow-tooltip prop="remark" label="明细备注" align="center" />
</el-table> </el-table>
</el-card> </el-card>
@@ -136,13 +138,13 @@
<el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column prop="pcsn" label="订单号" align="center" width="150" /> <el-table-column prop="pcsn" label="批次" align="center" width="150" />
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="托盘号" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" />
<el-table-column prop="point_code1" label="起始位置" align="center" /> <el-table-column prop="point_code1" label="起始位置" align="center" />
<el-table-column prop="point_code2" label="目的位置" align="center" /> <el-table-column prop="point_code2" label="目的位置" align="center" />
<el-table-column prop="task_code" label="任务号" align="center" /> <el-table-column prop="task_code" label="任务号" align="center" />
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/> <el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
<el-table-column prop="task_type" label="任务类型" align="center" width="150px" :formatter="formatType"/>
</el-table> </el-table>
</el-card> </el-card>
</el-dialog> </el-dialog>
@@ -157,7 +159,7 @@ export default {
name: 'ViewDialog', name: 'ViewDialog',
components: { }, components: { },
mixins: [crud()], mixins: [crud()],
dicts: ['ST_INV_OUT_TYPE', 'product_area', 'IO_BILL_STATUS','task_status', 'SCH_TASK_TYPE_DTL'], dicts: ['ST_INV_OUT_TYPE', 'product_area', 'IO_BILL_STATUS','task_status', 'SCH_TASK_TYPE_DTL', 'PCS_DELIVER_TYPE'],
props: { props: {
dialogShow: { dialogShow: {
type: Boolean, type: Boolean,
@@ -252,8 +254,8 @@ export default {
formatStatus(row) { formatStatus(row) {
return this.dict.label.task_status[row.task_status] return this.dict.label.task_status[row.task_status]
}, },
formatType(row) { formatBaseType(row) {
return this.dict.label.SCH_TASK_TYPE_DTL[row.task_type] return this.dict.label.PCS_DELIVER_TYPE[row.source_bill_type]
} }
} }
} }

View File

@@ -57,7 +57,7 @@
<el-option <el-option
v-for="item in pointList" v-for="item in pointList"
:key="item.point_code" :key="item.point_code"
:label="item.point_code" :label="item.point_name"
:value="item.point_code" :value="item.point_code"
/> />
</el-select> </el-select>
@@ -101,7 +101,7 @@
<el-input v-model="form.detail_count" size="mini" disabled style="width: 210px"/> <el-input v-model="form.detail_count" size="mini" disabled style="width: 210px"/>
</el-form-item> </el-form-item>
<el-form-item label="总重量" prop="total_qty"> <el-form-item label="总重量" prop="total_qty">
<label slot="label">总&nbsp;&nbsp;&nbsp;量:</label> <label slot="label">总&nbsp;&nbsp;&nbsp;量:</label>
<el-input-number <el-input-number
v-model="form.total_qty" v-model="form.total_qty"
:controls="false" :controls="false"
@@ -152,7 +152,7 @@
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码"/> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称"/> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称"/>
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格"/> <el-table-column show-overflow-tooltip prop="material_spec" label="物料规格"/>
<el-table-column show-overflow-tooltip prop="base_bill_code" label="订单号"> <!-- <el-table-column show-overflow-tooltip prop="base_bill_code" label="订单号">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input <el-input
v-model="form.tableData[scope.$index].base_bill_code" v-model="form.tableData[scope.$index].base_bill_code"
@@ -162,7 +162,7 @@
size="small" size="small"
/> />
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column show-overflow-tooltip prop="plan_qty" label="数量"> <el-table-column show-overflow-tooltip prop="plan_qty" label="数量">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input-number <el-input-number
@@ -227,6 +227,7 @@ import CRUD, {crud, form} from '@crud/crud'
import crudsemiproductIn from '@/views/wms/storage_manage/semiproduct/semiproductIn/semiproductIn' import crudsemiproductIn from '@/views/wms/storage_manage/semiproduct/semiproductIn/semiproductIn'
import MaterDtl from '@/views/wms/pub/MaterDialog' import MaterDtl from '@/views/wms/pub/MaterDialog'
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata' import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
import crudPoint from '@/views/wms/scheduler_manage/point/point'
const defaultForm = { const defaultForm = {
bill_code: '', bill_code: '',
@@ -266,7 +267,7 @@ export default {
opendtlParam: null, opendtlParam: null,
materType: '03', // 关键成品 materType: '03', // 关键成品
storlist: [], storlist: [],
pointList: [{ 'point_code': 'RK01' }], pointList: [],
billtypelist: [], billtypelist: [],
rules: { rules: {
product_code: [ product_code: [
@@ -293,6 +294,10 @@ export default {
crudStorattr.getStor({'stor_type': '2'}).then(res => { crudStorattr.getStor({'stor_type': '2'}).then(res => {
this.storlist = res.content this.storlist = res.content
}) })
const area_type = 'A1_BCPRK01'
crudPoint.getPoint({ 'area_type': area_type }).then(res => {
this.pointList = res
})
}, },
close() { close() {
this.$emit('AddChanged') this.$emit('AddChanged')
@@ -328,10 +333,10 @@ export default {
for (let i = 0; i < this.form.tableData.length; i++) { for (let i = 0; i < this.form.tableData.length; i++) {
const row = this.form.tableData[i] const row = this.form.tableData[i]
if (!row.base_bill_code) { // if (!row.base_bill_code) {
this.crud.notify('订单号', CRUD.NOTIFICATION_TYPE.INFO) // this.crud.notify('订单号', CRUD.NOTIFICATION_TYPE.INFO)
return false // return false
} // }
if (!row.plan_qty) { if (!row.plan_qty) {
this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO) this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO)
return false return false
@@ -380,6 +385,7 @@ export default {
}) })
if (same_mater) { if (same_mater) {
item.quality_scode = '01' item.quality_scode = '01'
item.unit_weight = item.net_weight
item.ivt_level = '01' item.ivt_level = '01'
item.is_active = '1' item.is_active = '1'
item.plan_qty = '1' item.plan_qty = '1'

View File

@@ -23,7 +23,7 @@
</el-form-item> </el-form-item>
<el-form-item label="生产车间"> <el-form-item label="生产车间">
<el-select <el-select
v-model="form.product_area" v-model="form.workshop_id"
clearable clearable
size="mini" size="mini"
placeholder="全部" placeholder="全部"
@@ -76,13 +76,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="明细数" prop="detail_count"> <el-form-item label="明细数" prop="detail_count">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label> <label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.detail_count" size="mini" disabled style="width: 210px" /> <el-input v-model="form.plan_qty" size="mini" disabled style="width: 210px" />
</el-form-item> </el-form-item>
<el-form-item label="总重量" prop="total_qty"> <el-form-item label="总重量" prop="total_qty">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label> <label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input-number <el-input-number
v-model="form.total_qty" v-model="form.weight_qty"
:controls="false" :controls="false"
:precision="3" :precision="3"
:min="0" :min="0"
@@ -113,18 +113,19 @@
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
> >
<el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="base_bill_code" label="订单号" width="150" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column prop="pcsn" label="批次" width="150" align="center" /> <el-table-column prop="pcsn" label="批次" width="150" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" />
<el-table-column prop="base_unit_name" label="单位" align="center" /> <el-table-column prop="qty_unit_name" label="单位" align="center" />
<el-table-column prop="unit_weight" label="单重" align="center" /> <el-table-column prop="unit_weight" label="单重" align="center" />
<el-table-column prop="storagevehicle_code" label="载具号" align="center" /> <el-table-column prop="storagevehicle_code" label="载具号" align="center" />
<el-table-column prop="struct_code" label="分配货位" align="center" /> <el-table-column prop="point_code" label="起始位置" align="center" />
<el-table-column prop="task_id" label="任务号" align="center" /> <el-table-column prop="struct_code" label="目的位置" align="center" />
<el-table-column prop="work_status" label="任务状态" align="center" /> <el-table-column prop="task_code" label="任务" align="center" />
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
</el-table> </el-table>
</el-card> </el-card>
</el-dialog> </el-dialog>
@@ -139,7 +140,7 @@ export default {
name: 'ViewDialog', name: 'ViewDialog',
components: { }, components: { },
mixins: [crud()], mixins: [crud()],
dicts: ['ST_INV_IN_TYPE', 'product_area', 'IO_BILL_STATUS'], dicts: ['ST_INV_IN_TYPE', 'product_area', 'IO_BILL_STATUS', 'task_status'],
props: { props: {
dialogShow: { dialogShow: {
type: Boolean, type: Boolean,
@@ -220,6 +221,9 @@ export default {
crudsemiproductIn.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { crudsemiproductIn.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => {
this.tableDtl = res this.tableDtl = res
}) })
},
formatStatus(row) {
return this.dict.label.task_status[row.task_status]
} }
} }
} }

View File

@@ -157,9 +157,10 @@
<el-table-column prop="workshop_id" label="生产车间" width="130" show-overflow-tooltip /> <el-table-column prop="workshop_id" label="生产车间" width="130" show-overflow-tooltip />
<el-table-column prop="stor_name" label="仓库" width="130" show-overflow-tooltip /> <el-table-column prop="stor_name" label="仓库" width="130" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="bill_type" min-width="120" label="业务类型" :formatter="bill_typeFormat" /> <el-table-column show-overflow-tooltip prop="bill_type" min-width="120" label="业务类型" :formatter="bill_typeFormat" />
<el-table-column show-overflow-tooltip prop="base_bill_code" min-width="120" label="关联单据号" /> <!-- <el-table-column show-overflow-tooltip prop="base_bill_code" min-width="120" label="关联单据号" />-->
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
<el-table-column show-overflow-tooltip min-width="120" prop="weight_qty" label="总重量" />
<el-table-column show-overflow-tooltip min-width="120" prop="plan_qty" label="总数量" /> <el-table-column show-overflow-tooltip min-width="120" prop="plan_qty" label="总数量" />
<el-table-column show-overflow-tooltip min-width="120" prop="unit_weight" label="单重" /> <el-table-column show-overflow-tooltip min-width="120" prop="unit_weight" label="单重" />
<el-table-column show-overflow-tooltip min-width="120" prop="storagevehicle_code" label="载具号" /> <el-table-column show-overflow-tooltip min-width="120" prop="storagevehicle_code" label="载具号" />
@@ -315,6 +316,7 @@ export default {
} }
crudsemiproductIn.confirm(this.currentRow).then(res => { crudsemiproductIn.confirm(this.currentRow).then(res => {
this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}) })
}, },
confirmTask() { confirmTask() {
@@ -324,6 +326,7 @@ export default {
} }
crudsemiproductIn.confirmTask(this.currentRow).then(res => { crudsemiproductIn.confirmTask(this.currentRow).then(res => {
this.crud.notify('单据下发任务成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('单据下发任务成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}) })
}, },
stateFormat(row, column) { stateFormat(row, column) {

View File

@@ -0,0 +1,148 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="所属仓库">
<el-select
v-model="query.stor_id"
clearable
size="mini"
placeholder="所属仓库"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in storlist"
:key="item.stor_id"
:label="item.stor_name"
:value="item.stor_id"
/>
</el-select>
</el-form-item>
<el-form-item label="入库日期">
<el-date-picker
v-model="query.createTime"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
@change="crud.toQuery"
/>
</el-form-item>
<el-form-item label="仓位编码">
<el-input
v-model="query.struct_code"
size="mini"
clearable
placeholder="仓位编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="物料编码">
<el-input
v-model="query.material_code"
size="mini"
clearable
placeholder="物料编码、名称、规格"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
size="mini"
:data="crud.data"
highlight-current-row
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column show-overflow-tooltip prop="stor_name" label="仓库名称" />
<el-table-column show-overflow-tooltip prop="sect_name" label="库区名称" />
<el-table-column show-overflow-tooltip prop="struct_code" label="仓位编码" />
<el-table-column show-overflow-tooltip prop="struct_name" label="仓位名称" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_name" label="物料名称" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
<el-table-column show-overflow-tooltip prop="canuse_qty" label="可用数量" :formatter="crud.formatNum3" />
<el-table-column show-overflow-tooltip prop="unit_name" label="单位" />
<el-table-column show-overflow-tooltip prop="instorage_time" label="入库时间" min-width="150" />
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import CRUD, { crud, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker/index'
import crudStorattr, { getStor } from '@/views/wms/storage_manage/basedata/basedata'
import semiproductivt from '@/views/wms/storage_manage/semiproduct/semiproductIvt/semiproductivt'
export default {
name: 'ProductIn',
components: { crudOperation, rrOperation, udOperation, pagination, DateRangePicker },
cruds() {
return CRUD({
title: '半成品库存',
optShow: { add: false, reset: true },
idField: 'struct_id',
url: '/api/bcp',
crudMethod: { ...semiproductivt }
})
},
mixins: [presenter(), header(), crud()],
// 数据字典
data() {
return {
height: document.documentElement.clientHeight - 180 + 'px;',
permission: {},
storlist: [],
storId: null
}
},
mounted: function() {
const that = this
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 180 + 'px;'
}
},
created() {
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
this.storlist = res.content
})
},
methods: {
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep .el-dialog__body {
padding-top: 10px;
}
</style>

View File

@@ -0,0 +1,31 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: '/api/bcp',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: '/api/bcp/delete',
method: 'post',
data: ids
})
}
export function edit(data) {
return request({
url: '/api/bcp/update',
method: 'post',
data
})
}
export default {
add,
edit,
del
}

View File

@@ -80,7 +80,7 @@
<el-option <el-option
v-for="item in pointList" v-for="item in pointList"
:key="item.point_code" :key="item.point_code"
:label="item.point_code" :label="item.point_name"
:value="item.point_code" :value="item.point_code"
/> />
</el-select> </el-select>
@@ -124,7 +124,7 @@
<el-input v-model="form.detail_count" size="mini" disabled style="width: 210px" /> <el-input v-model="form.detail_count" size="mini" disabled style="width: 210px" />
</el-form-item> </el-form-item>
<el-form-item label="总重量" prop="total_qty"> <el-form-item label="总重量" prop="total_qty">
<label slot="label">总&nbsp;&nbsp;&nbsp;量:</label> <label slot="label">总&nbsp;&nbsp;&nbsp;量:</label>
<el-input-number <el-input-number
v-model="form.total_qty" v-model="form.total_qty"
:controls="false" :controls="false"
@@ -207,6 +207,7 @@ import CRUD, { crud, form } from '@crud/crud'
import crudsemiproductOut from '@/views/wms/storage_manage/semiproduct/semiproductout/semiproductout' import crudsemiproductOut from '@/views/wms/storage_manage/semiproduct/semiproductout/semiproductout'
import MaterDtl from '@/views/wms/storage_manage/semiproduct/semiproductout/StructIvt' import MaterDtl from '@/views/wms/storage_manage/semiproduct/semiproductout/StructIvt'
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata' import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
import crudPoint from '@/views/wms/scheduler_manage/point/point'
const defaultForm = { const defaultForm = {
bill_code: '', bill_code: '',
@@ -247,7 +248,7 @@ export default {
materType: '03', // 关键成品 materType: '03', // 关键成品
storlist: [], storlist: [],
billtypelist: [], billtypelist: [],
pointList: [{ 'point_code': 'CK01' }], pointList: [],
rules: { rules: {
product_code: [ product_code: [
{ required: true, message: '生产车间不能为空', trigger: 'blur' } { required: true, message: '生产车间不能为空', trigger: 'blur' }
@@ -279,6 +280,10 @@ export default {
crudStorattr.getStor({ 'stor_type': '2' }).then(res => { crudStorattr.getStor({ 'stor_type': '2' }).then(res => {
this.storlist = res.content this.storlist = res.content
}) })
const area_type = 'A1_BCPCK01'
crudPoint.getPoint({ 'area_type': area_type }).then(res => {
this.pointList = res
})
}, },
close() { close() {
this.$emit('AddChanged') this.$emit('AddChanged')

View File

@@ -19,12 +19,12 @@
label-width="80px" label-width="80px"
label-suffix=":" label-suffix=":"
> >
<el-form-item label="库区/货位"> <el-form-item label="货位">
<el-input <el-input
v-model="query.bill_code" v-model="query.struct_search"
clearable clearable
size="mini" size="mini"
placeholder="库区/货位" placeholder="货位编码"
style="width: 200px;" style="width: 200px;"
class="filter-item" class="filter-item"
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
@@ -35,7 +35,7 @@
v-model="query.material_search" v-model="query.material_search"
clearable clearable
size="mini" size="mini"
placeholder="物料" placeholder="物料、编码、规格"
style="width: 230px;" style="width: 230px;"
class="filter-item" class="filter-item"
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
@@ -56,9 +56,11 @@
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip width="100" prop="sect_code" label="库区" /> <el-table-column show-overflow-tooltip width="100" prop="sect_code" label="库区编码" />
<el-table-column show-overflow-tooltip width="150" prop="struct_name" label="货位" /> <el-table-column show-overflow-tooltip width="150" prop="struct_code" label="货位编码" />
<el-table-column show-overflow-tooltip width="150" prop="struct_name" label="货位名称" />
<el-table-column show-overflow-tooltip prop="material_code" width="100" label="物料编号" /> <el-table-column show-overflow-tooltip prop="material_code" width="100" label="物料编号" />
<el-table-column show-overflow-tooltip prop="material_spec" width="100" label="物料规格" />
<el-table-column show-overflow-tooltip width="300" prop="material_name" label="物料名称" /> <el-table-column show-overflow-tooltip width="300" prop="material_name" label="物料名称" />
<el-table-column show-overflow-tooltip width="150" prop="canuse_qty" label="数量(个)" /> <el-table-column show-overflow-tooltip width="150" prop="canuse_qty" label="数量(个)" />
<el-table-column show-overflow-tooltip width="100" prop="unit_weight" label="单重" /> <el-table-column show-overflow-tooltip width="100" prop="unit_weight" label="单重" />

View File

@@ -23,7 +23,7 @@
</el-form-item> </el-form-item>
<el-form-item label="生产车间"> <el-form-item label="生产车间">
<el-select <el-select
v-model="form.product_area" v-model="form.workshop_id"
clearable clearable
size="mini" size="mini"
placeholder="全部" placeholder="全部"
@@ -75,14 +75,14 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="明细数" prop="detail_count"> <el-form-item label="总重量" prop="detail_count">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.detail_count" size="mini" disabled style="width: 210px" />
</el-form-item>
<el-form-item label="总重量" prop="total_qty">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label> <label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.weight_qty" size="mini" disabled style="width: 210px" />
</el-form-item>
<el-form-item label="总数量" prop="total_qty">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
<el-input-number <el-input-number
v-model="form.total_qty" v-model="form.plan_qty"
:controls="false" :controls="false"
:precision="3" :precision="3"
:min="0" :min="0"
@@ -113,18 +113,18 @@
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
> >
<el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="base_bill_code" label="订单号" width="150" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" /> <el-table-column min-width="120" show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column prop="pcsn" label="批次" width="150" align="center" /> <el-table-column prop="pcsn" label="批次" width="150" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" />
<el-table-column prop="base_unit_name" label="单位" align="center" /> <el-table-column prop="qty_unit_name" label="单位" align="center" />
<el-table-column prop="unit_weight" label="单重" align="center" /> <el-table-column prop="unit_weight" label="单重" align="center" />
<el-table-column prop="storagevehicle_code" label="载具号" align="center" /> <el-table-column prop="storagevehicle_code" label="载具号" align="center" />
<el-table-column prop="struct_code" label="分配货位" align="center" /> <el-table-column prop="point_code" label="起始位置" align="center" />
<el-table-column prop="task_id" label="任务号" align="center" /> <el-table-column prop="struct_code" label="目的位置" align="center" />
<el-table-column prop="work_status" label="任务状态" align="center" /> <el-table-column prop="task_code" label="任务" align="center" />
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
</el-table> </el-table>
</el-card> </el-card>
</el-dialog> </el-dialog>
@@ -139,7 +139,7 @@ export default {
name: 'ViewDialog', name: 'ViewDialog',
components: { }, components: { },
mixins: [crud()], mixins: [crud()],
dicts: ['ST_INV_IN_TYPE', 'product_area', 'IO_BILL_STATUS'], dicts: ['ST_INV_IN_TYPE', 'product_area', 'IO_BILL_STATUS', 'task_status'],
props: { props: {
dialogShow: { dialogShow: {
type: Boolean, type: Boolean,
@@ -220,6 +220,9 @@ export default {
crudsemiproductOut.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { crudsemiproductOut.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => {
this.tableDtl = res this.tableDtl = res
}) })
},
formatStatus(row) {
return this.dict.label.task_status[row.task_status]
} }
} }
} }

View File

@@ -159,6 +159,7 @@
<el-table-column show-overflow-tooltip prop="bill_type" min-width="120" label="业务类型" :formatter="bill_typeFormat" /> <el-table-column show-overflow-tooltip prop="bill_type" min-width="120" label="业务类型" :formatter="bill_typeFormat" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_code" label="物料编码" />
<el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" /> <el-table-column show-overflow-tooltip min-width="120" prop="material_spec" label="物料规格" />
<el-table-column show-overflow-tooltip min-width="120" prop="weight_qty" label="总重量" />
<el-table-column show-overflow-tooltip min-width="120" prop="plan_qty" label="总数量" /> <el-table-column show-overflow-tooltip min-width="120" prop="plan_qty" label="总数量" />
<el-table-column show-overflow-tooltip min-width="120" prop="qty_unit_name" label="单位" /> <el-table-column show-overflow-tooltip min-width="120" prop="qty_unit_name" label="单位" />
<el-table-column show-overflow-tooltip min-width="120" prop="point_code" label="出库点" /> <el-table-column show-overflow-tooltip min-width="120" prop="point_code" label="出库点" />
@@ -313,7 +314,7 @@ export default {
} }
crudsemiproductout.confirm(this.currentRow).then(res => { crudsemiproductout.confirm(this.currentRow).then(res => {
this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.refresh() this.crud.toQuery()
}) })
}, },
confirmTask() { confirmTask() {
@@ -323,7 +324,7 @@ export default {
} }
crudsemiproductout.confirmTask(this.currentRow).then(res => { crudsemiproductout.confirmTask(this.currentRow).then(res => {
this.crud.notify('单据下发任务成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('单据下发任务成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.refresh() this.crud.toQuery()
}) })
}, },
stateFormat(row, column) { stateFormat(row, column) {