add:出入库单增加明细载具物料查询;限位策略增加1109过滤1,2列

This commit is contained in:
zhangzq
2024-12-22 20:24:32 +08:00
parent 8a8cee04d8
commit cf3c8b00e4
11 changed files with 154 additions and 42 deletions

View File

@@ -2,6 +2,7 @@ package org.nl.wms.decision_manage.handler.decisioner.impl.base;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
@@ -52,6 +53,14 @@ public class LimitStorageRuleHandler extends Decisioner<StIvtStructattr, JSONObj
if (vehileInfo==null){
throw new BadRequestException("当前载具信息不存在:"+vehicleCode+"!");
}
//限位策略特殊处理
String start_point = param.getString("start_point");
if (StringUtils.isNotEmpty(start_point) && start_point.equals("1109")){
List<StIvtStructattr> collect = list.stream().filter(struct -> struct.getCol_num() > 2).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)){
list = collect;
}
}
List<StIvtStructattr> resultList = inHandler(list,vehileInfo);
return resultList;
}

View File

@@ -312,7 +312,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
.set("remark", "入满异常:" + task_code)
.set("vehicle_code", task_code+"_ZD_"+org.nl.common.utils.IdUtil.getStringId()));
Map map = SpringContextHolder.getBean(DecisionHandler.class)
.dispenseTransa(ListOf.of("limitStorage","depthPriority","nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code(),"vehicle_code",task.getVehicle_code())));
.dispenseTransa(ListOf.of("limitStorage","depthPriority","nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code()
,"vehicle_code",task.getVehicle_code(),
"start_point",task.getPoint_code1())));
String new_struct_code = ((Map<String, String>) map.get("form_data")).get("end_struct_code");
if (vehicleCode!=null){
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()

View File

@@ -40,8 +40,8 @@ public class StIvtIostorinvController {
@GetMapping
public ResponseEntity<Object> getAll(StorInvQuery query, PageQuery page) {
Page<StIvtIostorinv> result = iStIvtIostorinvService.page(page.build(), query.build());
return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK);
TableDataInfo result = iStIvtIostorinvService.pageQuery(query, page);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("delete")
@Log("删除入库单")

View File

@@ -41,8 +41,8 @@ public class StIvtIostorinvOutController {
@GetMapping
public ResponseEntity<Object> getAll(StorInvQuery query, PageQuery page) {
Page<StIvtIostorinv> result = iStIvtIostorinvService.page(page.build(), query.build());
return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK);
TableDataInfo result = iStIvtIostorinvService.pageQuery(query, page);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("delete")
@Log("删除出库单")

View File

@@ -13,6 +13,8 @@ public class StorInvQuery extends BaseQuery<StIvtIostorinv>{
private String form_type;
private String code;
private String status;
private String vehicles;
private String material;
private String bill_type;
private Boolean in_storage;
private String product_code;

View File

@@ -1,7 +1,11 @@
package org.nl.wms.stor_manage.io.service.iostor;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.stor_manage.io.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
/**
@@ -40,4 +44,7 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
String cancelMst(String id);
void taskOpen(JSONObject form);
TableDataInfo pageQuery(StorInvQuery query, PageQuery page);
}

View File

@@ -2,8 +2,12 @@ package org.nl.wms.stor_manage.io.service.iostor.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.stor_manage.io.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
import java.util.List;
/**
* <p>
* 出入库单主表 Mapper 接口
@@ -13,5 +17,5 @@ import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
* @since 2024-03-28
*/
public interface StIvtIostorinvOutMapper extends BaseMapper<StIvtIostorinv> {
List<StIvtIostorinv> pageQuery(@Param("query") StorInvQuery query);
}

View File

@@ -2,4 +2,46 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.stor_manage.io.service.iostor.dao.mapper.StIvtIostorinvOutMapper">
<select id="pageQuery" resultType="org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv">
SELECT
st_ivt_iostorinv.*
FROM
st_ivt_iostorinv
left join st_ivt_iostorinvdtl on st_ivt_iostorinv.id = st_ivt_iostorinvdtl.inv_id
LEFT JOIN md_me_materialbase on st_ivt_iostorinvdtl.material_id = md_me_materialbase.material_id
<where> st_ivt_iostorinv.id is not null
<if test="query.form_type != null and query.form_type != ''">
and st_ivt_iostorinv.form_type = #{query.form_type}
</if>
<if test="query.code != null and query.code != ''">
and st_ivt_iostorinv.code = #{query.code}
</if>
<if test="query.form_type != null and query.form_type != ''">
and st_ivt_iostorinv.form_type = #{query.form_type}
</if>
<if test="query.status != null and query.status != ''">
and st_ivt_iostorinv.status = #{query.status}
</if>
<if test="query.bill_type != null and query.bill_type != ''">
and st_ivt_iostorinv.bill_type = #{query.bill_type}
</if>
<if test="query.in_storage != null and query.in_storage != ''">
and st_ivt_iostorinv.in_storage = #{query.in_storage}
</if>
<if test="query.vehicles != null and query.vehicles != ''">
and st_ivt_iostorinvdtl.vehicle_code = #{query.vehicles}
</if>
<if test="query.material != null and query.material != ''">
and (md_me_materialbase.material_spec LIKE '%${query.material}%'
or md_me_materialbase.material_name LIKE '%${query.material}%')
</if>
<if test="query.product_code != null and query.product_code != ''">
and st_ivt_iostorinv.product_code = #{query.product_code}
</if>
<if test="query.source_form_code != null and query.source_form_code != ''">
and st_ivt_iostorinv.source_form_code = #{query.source_form_code}
</if>
</where>
GROUP BY st_ivt_iostorinv.id
</select>
</mapper>

View File

@@ -5,7 +5,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
@@ -21,6 +25,7 @@ import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.PmFormDataDto;
import org.nl.wms.stor_manage.io.service.dto.StorInvQuery;
import org.nl.wms.stor_manage.io.service.iostor.IStIvtIostorinvService;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
import org.nl.wms.stor_manage.io.service.iostor.dao.mapper.StIvtIostorinvOutMapper;
@@ -408,4 +413,13 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
}
return null;
}
@Override
public TableDataInfo pageQuery(StorInvQuery query, PageQuery pageQuery) {
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
List<StIvtIostorinv> iostorinvs = this.baseMapper.pageQuery(query);
TableDataInfo build = TableDataInfo.build(iostorinvs);
build.setTotalElements(page.getTotal());
return build;
}
}

View File

@@ -28,6 +28,22 @@
placeholder="源单号"
/>
</el-form-item>
<el-form-item label="分配载具">
<el-input
v-model="query.vehicles"
size="mini"
clearable
placeholder="分配载具"
/>
</el-form-item>
<el-form-item label="明细物料">
<el-input
v-model="query.material"
size="mini"
clearable
placeholder="物料编码或名称"
/>
</el-form-item>
<el-form-item label="单据类型">
<el-select
v-model="query.bill_type"
@@ -77,10 +93,10 @@
<template v-for="(col,index) in cols">
<el-form-item label="col.lable" prop="bill_code">
<label slot="label">{{ col.lable }}:</label>
<el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px"/>
<el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px" />
</el-form-item>
</template>
<rrOperation/>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
@@ -132,7 +148,7 @@
@select="handleSelectionChange"
@select-all="onSelectAll"
>
<el-table-column type="selection" width="55"/>
<el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip prop="code" width="130" label="单据号">
<template slot-scope="scope">
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.code }}</el-link>
@@ -148,16 +164,16 @@
{{ statusEnum.label.FORM_STATUS[scope.row.status] }}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="source_form_type" min-width="120" label="源单类型"/>
<el-table-column show-overflow-tooltip prop="source_form_code" label="源单编码" min-width="155"/>
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单id" min-width="155"/>
<el-table-column show-overflow-tooltip prop="source_form_date" label="源单时间" min-width="140"/>
<el-table-column show-overflow-tooltip prop="source_form_type" min-width="120" label="源单类型" />
<el-table-column show-overflow-tooltip prop="source_form_code" label="源单编码" min-width="155" />
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单id" min-width="155" />
<el-table-column show-overflow-tooltip prop="source_form_date" label="源单时间" min-width="140" />
<el-table-column v-for="(item, index) in cols" :key="item.value" :label="item.lable">
<template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="create_name"/>
<el-table-column label="创建时间" align="center" prop="create_time" width="150"/>
<el-table-column label="备注" align="center" prop="remark"/>
<el-table-column label="创建人" align="center" prop="create_name" />
<el-table-column label="创建时间" align="center" prop="create_time" width="150" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
@@ -169,18 +185,18 @@
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
<pagination />
</div>
<AddDialog ref="editDialog" @AddChanged="querytable"/>
<ViewDialog ref="itemview"/>
<TaskDialog ref="taskDis"/>
<AddDialog ref="editDialog" @AddChanged="querytable" />
<ViewDialog ref="itemview" />
<TaskDialog ref="taskDis" />
</div>
</template>
<script>
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import crudProductIn from '@/views/wms/stor_manage/in/storinvin'
import CRUD, {crud, header, form, presenter} from '@crud/crud'
import CRUD, { crud, header, form, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
@@ -188,7 +204,7 @@ import pagination from '@crud/Pagination'
import AddDialog from '@/views/wms/stor_manage/in/AddDialog'
import TaskDialog from '@/views/wms/stor_manage/in/TaskDialog'
import ViewDialog from '@/views/wms/stor_manage/in/ViewDialog'
import {mapGetters} from 'vuex'
import { mapGetters } from 'vuex'
const defaultForm = {
id: '',
@@ -224,10 +240,10 @@ export default {
cruds() {
return CRUD({
title: '',
optShow: {add: true, reset: true},
optShow: { add: true, reset: true },
idField: 'id',
url: '/api/stIvtIostorinv',
crudMethod: {...crudProductIn},
crudMethod: { ...crudProductIn },
query: {
in_storage: true
},
@@ -264,7 +280,7 @@ export default {
'user'
])
},
mounted: function () {
mounted: function() {
const that = this
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 180 + 'px;'
@@ -293,7 +309,7 @@ export default {
this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.confirm({'iostorinv_id': this.currentRow.iostorinv_id}).then(res => {
crudProductIn.confirm({ 'iostorinv_id': this.currentRow.iostorinv_id }).then(res => {
this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})

View File

@@ -2,7 +2,7 @@
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div >
<div>
<!-- 搜索 -->
<el-form
:inline="true"
@@ -28,6 +28,22 @@
placeholder="单据号"
/>
</el-form-item>
<el-form-item label="分配载具">
<el-input
v-model="query.vehicles"
size="mini"
clearable
placeholder="分配载具"
/>
</el-form-item>
<el-form-item label="明细物料">
<el-input
v-model="query.material"
size="mini"
clearable
placeholder="物料编码或名称"
/>
</el-form-item>
<el-form-item label="单据类型">
<el-select
v-model="query.bill_type"
@@ -76,7 +92,7 @@
</el-form-item>
<template v-for="(col,index) in cols">
<el-form-item label="col.lable" prop="bill_code">
<label slot="label">{{col.lable}}:</label>
<label slot="label">{{ col.lable }}:</label>
<el-input v-model="query.form_query[col.value]" :value="col.value" clearable style="width: 210px" />
</el-form-item>
</template>
@@ -135,7 +151,7 @@
<el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip prop="code" width="130" label="单据号">
<template slot-scope="scope">
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.code }}</el-link>
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="bill_type" label="业务类型">
@@ -152,8 +168,8 @@
<el-table-column show-overflow-tooltip prop="source_form_code" label="源单编码" min-width="155" />
<el-table-column show-overflow-tooltip prop="source_form_id" label="源单id" min-width="155" />
<el-table-column show-overflow-tooltip prop="source_form_date" label="源单时间" min-width="140" />
<el-table-column v-for="(item, index) in cols" :key="item.value" :label="item.lable" >
<template slot-scope="scope">{{scope.row.form_data[item.value]}}</template>
<el-table-column v-for="(item, index) in cols" :key="item.value" :label="item.lable">
<template slot-scope="scope">{{ scope.row.form_data[item.value] }}</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="create_name" />
<el-table-column label="创建时间" align="center" prop="create_time" width="150" />
@@ -171,15 +187,15 @@
<pagination />
</div>
<AddDialog ref="editDialog" @AddChanged="querytable" />
<ViewDialog ref="itemview"/>
<TaskDialog ref="taskDis"/>
<ViewDialog ref="itemview" />
<TaskDialog ref="taskDis" />
</div>
</template>
<script>
import formstruc from '@/views/wms/config_manage/formStruc/formstruc'
import crudProductOut from '@/views/wms/stor_manage/out/storinvout'
import CRUD, { crud, header,form, presenter } from '@crud/crud'
import CRUD, { crud, header, form, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
@@ -216,8 +232,8 @@ export default {
idField: 'id',
url: '/api/stIvtIostorinvOut',
crudMethod: { ...crudProductOut },
query:{
in_storage :false
query: {
in_storage: false
},
props: {
size: 10
@@ -226,10 +242,10 @@ export default {
},
mixins: [presenter(), header(), form(defaultForm), crud()],
// 数据字典
statusEnums: ['FORM_STATUS','IOBILL_TYPE_OUT','FLOW_STATUS'],
statusEnums: ['FORM_STATUS', 'IOBILL_TYPE_OUT', 'FLOW_STATUS'],
data() {
return {
cols:[],
cols: [],
height: document.documentElement.clientHeight - 180 + 'px;',
permission: {},
dis_flag: true,
@@ -298,7 +314,7 @@ export default {
this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductOut.taskOpen(this.currentRow ).then(res => {
crudProductOut.taskOpen(this.currentRow).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
@@ -308,7 +324,7 @@ export default {
this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductOut.cancelMst(this.currentRow.id ).then(res => {
crudProductOut.cancelMst(this.currentRow.id).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
@@ -335,7 +351,7 @@ export default {
buttonChange(currentRow) {
if (currentRow !== null) {
this.currentRow = currentRow
if (currentRow.status === '10'|| currentRow.status === '13') {
if (currentRow.status === '10' || currentRow.status === '13') {
this.dis_flag = false
} else {
this.dis_flag = true
@@ -345,7 +361,7 @@ export default {
} else {
this.confirm_flag = true
}
if (currentRow.status === '13') {
if (currentRow.status === '13') {
this.task_flag = false
} else {
this.task_flag = true