Merge remote-tracking branch 'origin/b_lms' into b_lms

This commit is contained in:
2024-07-02 22:44:23 +08:00
10 changed files with 380 additions and 23 deletions

View File

@@ -84,7 +84,7 @@
WHERE b.point_status = '3'
AND b.ivt_status = '3'
AND a.sale_order_name = #{sale_order_name}
ORDER BY paper_tube_description
ORDER BY box_group
</select>

View File

@@ -295,8 +295,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
Set<String> containerNameList = packagerelationList.stream()
.map(PdmBiSubpackagerelation::getContainer_name)
.collect(Collectors.toSet());
BigDecimal totalWeight;
List<PdmBiSlittingproductionplan> planList = iPdmBiSlittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().in(PdmBiSlittingproductionplan::getContainer_name, containerNameList));
if (CollectionUtils.isEmpty(planList)) {
throw new BadRequestException("该箱号不存在分切计划");
}
BigDecimal totalWeight;
totalWeight = planList.stream()
.map(PdmBiSlittingproductionplan::getWeight)
.filter(Objects::nonNull)

View File

@@ -1,21 +1,25 @@
package org.nl.b_lms.sch.point.controller;
import java.util.Set;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.modules.common.exception.BadRequestException;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.pdm.ivt.service.dto.DeliveryPointIvtDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
/**
@@ -35,6 +39,19 @@ public class BstIvtPackageinfoivtController {
private IbstIvtPackageinfoivtService bstIvtPackageinfoivtService;
/**
* 分页查询
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@GetMapping
@Log("查询点位库存")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(bstIvtPackageinfoivtService.queryAll(whereJson, page)), HttpStatus.OK);
}
/**
* 一楼装箱区点位二次分配
*
@@ -53,10 +70,7 @@ public class BstIvtPackageinfoivtController {
return new ResponseEntity<>(bstIvtPackageinfoivtService.secondaryAllocationPoint(taskCode, actionType), HttpStatus.OK);
}
/**
* agv二次分配类型1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配
*/
private String agv_action_type;
/**
* 新增数据
@@ -65,12 +79,28 @@ public class BstIvtPackageinfoivtController {
* @return 新增结果
*/
@PostMapping
@Log("修改点位库存")
public ResponseEntity<Object> create(@RequestBody BstIvtPackageinfoivt params) {
bstIvtPackageinfoivtService.create(params);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
* @param params 实体对象
* @return 修改结果
*/
@PutMapping
@Log("修改点位库存")
//@SaCheckPermission("@el.check('deliverypointivt:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody BstIvtPackageinfoivt params) {
bstIvtPackageinfoivtService.update(params);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
/**
* 删除数据
*

View File

@@ -75,6 +75,15 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
/**
* 编辑
*
* @param params 实体对象
*/
void update(BstIvtPackageinfoivt params);
/**
* 手持子卷质检
*
* @param whereJson /
*/
JSONObject update(JSONObject whereJson);

View File

@@ -1,6 +1,7 @@
package org.nl.b_lms.sch.point.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -26,6 +27,7 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -66,8 +68,24 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
*/
@Override
public IPage<BstIvtPackageinfoivt> queryAll(Map whereJson, PageQuery page) {
return bstIvtPackageinfoivtMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<BstIvtPackageinfoivt>()
.lambda());
LambdaQueryWrapper<BstIvtPackageinfoivt> queryWrapper = new QueryWrapper<BstIvtPackageinfoivt>().lambda();
String isUsed = MapUtil.getStr(whereJson, "is_used");
String pointCode = MapUtil.getStr(whereJson, "point_code");
String packageInfoArea = MapUtil.getStr(whereJson, "packageinfo_area");
String ivtStatus = MapUtil.getStr(whereJson, "ivt_status");
if (StringUtils.isNotEmpty(isUsed)) {
queryWrapper.eq(BstIvtPackageinfoivt::getIs_used, isUsed);
}
if (StringUtils.isNotEmpty(pointCode)) {
queryWrapper.like(BstIvtPackageinfoivt::getPoint_code, pointCode);
}
if (StringUtils.isNotEmpty(packageInfoArea)) {
queryWrapper.eq(BstIvtPackageinfoivt::getPoint_status, packageInfoArea);
}
if (StringUtils.isNotEmpty(ivtStatus)) {
queryWrapper.eq(BstIvtPackageinfoivt::getIvt_status, ivtStatus);
}
return bstIvtPackageinfoivtMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper);
}
@Override
@@ -497,12 +515,27 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
*/
@Override
public void create(BstIvtPackageinfoivt entity) {
bstIvtPackageinfoivtMapper.insert(getBasicInfo(entity, true));
bstIvtPackageinfoivtMapper.insert(getBasicInfo(entity, null, true));
}
/**
* 编辑
*
* @param params 实体对象
*/
@Override
public void update(BstIvtPackageinfoivt params) {
BstIvtPackageinfoivt dto = bstIvtPackageinfoivtMapper.selectById(params.getIvt_id());
if (dto == null) {
throw new BadRequestException("不存在该数据!");
}
bstIvtPackageinfoivtMapper.updateById(getBasicInfo(params, dto, false));
}
/**
* 手持子卷质检
*/
@Override
public JSONObject update(JSONObject whereJson) {
@@ -520,7 +553,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
return result;
}
dto.setIvt_status(whereJson.getString("ivt_status"));
bstIvtPackageinfoivtMapper.updateById(getBasicInfo(dto, false));
dto.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
dto.setUpdate_optname(SecurityUtils.getCurrentNickName());
dto.setUpdate_time(DateUtil.now());
bstIvtPackageinfoivtMapper.updateById(dto);
result.put("status", org.springframework.http.HttpStatus.OK.value());
result.put("message", "检验成功!");
return result;
@@ -545,16 +581,18 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* @param entity 对象实体
* @param isCreate 是否创建
*/
private BstIvtPackageinfoivt getBasicInfo(BstIvtPackageinfoivt entity, boolean isCreate) {
private BstIvtPackageinfoivt getBasicInfo(BstIvtPackageinfoivt entity, BstIvtPackageinfoivt dto, boolean isCreate) {
if (isCreate) {
entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
} else {
BeanUtils.copyProperties(entity, dto);
}
entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
entity.setUpdate_time(DateUtil.now());
return entity;
return dto;
}

View File

@@ -63,7 +63,7 @@ public enum PackageInfoIvtEnum {
POINT_LOCATION(MapOf.of("", "0", "", "1")),
//库存状态
IVT_STATUS(MapOf.of("", "0", "空载具", "1", "有子卷", "2", "合格品", "3", "管制品", "4"));
IVT_STATUS(MapOf.of("", "0", "空载具", "1", "有子卷", "2", "合格品", "3", "管制品", "4"));
private Map<String, String> code;

View File

@@ -46,7 +46,6 @@ public class DeliveryPointIvtController {
@PutMapping
@Log("修改分切输送线")
//@SaCheckPermission("@el.check('deliverypointivt:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody DeliveryPointIvtDto dto) {
deliverypointivtService.update(dto);

View File

@@ -0,0 +1,248 @@
<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="90px"
label-suffix=":"
>
<el-form-item label="点位编码">
<el-input
v-model="query.point_code"
clearable
placeholder="输入点位编码"
style="width: 185px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="点位区域">
<el-select
v-model="query.packageinfo_area"
clearable
filterable
size="mini"
class="filter-item"
style="width: 185px;"
@change="hand"
>
<el-option
v-for="item in dict.packageinfo_area"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="点位状态">
<el-select
v-model="query.ivt_status"
clearable
filterable
size="mini"
class="filter-item"
style="width: 185px;"
@change="hand"
>
<el-option
v-for="item in dict.sch_packageinfo_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否启用">
<el-switch
v-model="query.is_used"
active-value="0"
inactive-value="1"
active-color="#C0CCDA"
inactive-color="#409EFF"
@change="hand"
/>
</el-form-item>
<rrOperation :crud="crud" />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission" />
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="500px"
>
<br>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="点位编码" prop="point_code">
<el-input v-model="form.point_code" style="width: 370px;" disabled />
</el-form-item>
<el-form-item label="点位名称" prop="point_name">
<el-input v-model="form.point_name" style="width: 370px;" disabled />
</el-form-item>
<el-form-item label="子卷编号">
<el-input v-model="form.container_name" style="width: 370px;" />
</el-form-item>
<el-form-item label="点位状态">
<el-select
v-model="form.point_status"
size="mini"
placeholder="点位状态"
class="filter-item"
style="width: 370px;"
>
<el-option
v-for="item in dict.sch_packageinfo_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="顺序号" prop="sort_seq">
<el-input v-model="form.sort_seq" style="width: 370px;" disabled />
</el-form-item>
<el-form-item label="是否启用" prop="is_used">
<el-switch v-model="form.is_used" active-value="1" inactive-value="0" />
</el-form-item>
<el-form-item label="备注">
<el-input v-model="form.remark" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="point_status" label="区域类型">
<template slot-scope="scope">
{{ dict.label.packageinfo_area[scope.row.point_status] }}
</template>
</el-table-column>
<el-table-column prop="point_code" label="点位编码" width="100px" />
<el-table-column prop="point_name" label="点位名称" width="140px" />
<el-table-column prop="ivt_status" label="库存状态">
<template slot-scope="scope">
{{ dict.label.sch_packageinfo_status[scope.row.ivt_status] }}
</template>
</el-table-column>
<el-table-column prop="container_name" label="子卷编号" width="140px" />
<el-table-column prop="row_num" label="" width="100px" />
<el-table-column prop="col_num" label="" width="100px" />
<el-table-column prop="depth" label="深浅位" width="100px" />
<el-table-column prop="wait_point_type" label="等待点" width="100px" />
<el-table-column prop="is_used" label="是否启用">
<template slot-scope="scope">
{{ dict.label.is_used[scope.row.is_used] }}
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" />
<el-table-column prop="update_time" label="修改时间" min-width="150" show-overflow-tooltip />
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
:is-visiable-del="false"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudDeliverypointivt from './packageinfoivt'
import CRUD, { crud, form, 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'
const defaultForm = {
ivt_id: null,
point_code: null,
product_area: null,
qzzno: null,
vehicle_code: null,
point_status: null,
packageinfo_area: null,
sch_packageinfo_status: null,
sort_seq: null,
is_used: null,
remark: null,
create_id: null,
create_name: null,
create_time: null,
update_optid: null,
update_optname: null,
update_time: null
}
export default {
name: 'Packageinfoivt',
components: { pagination, crudOperation, rrOperation, udOperation },
dicts: ['sch_packageinfo_status', 'packageinfo_area', 'is_used'],
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '装箱区域',
url: 'api/bstIvtPackageInfoIvt',
idField: 'ivt_id',
sort: 'ivt_id,desc',
crudMethod: { ...crudDeliverypointivt },
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: true
}
})
},
data() {
return {
permission: {},
rules: {
point_code: [
{ required: true, message: '点位编码不能为空', trigger: 'blur' }
],
is_used: [
{ required: true, message: '是否启用不能为空', trigger: 'blur' }
]
}
}
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
hand(value) {
this.crud.toQuery()
}
}
}
</script>
<style scoped>
</style>

View File

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

View File

@@ -380,6 +380,9 @@ export default {
if (this.currentSelection.length > 0 && this.$refs.dis_table.selection.length > 0) {
debugger
const descriptionList = this.currentSelection.filter(item => item.paper_tube_description !== null && item.paper_tube_description !== '')
if (descriptionList.length === 0) {
this.crud.notify('未查询到该子卷的规格信息,请检查子卷的分切计划信息!', CRUD.NOTIFICATION_TYPE.WARNING)
}
const paper_tube_description = descriptionList[0].paper_tube_description
const descriptionsAreSame = this.currentSelection.every(item => item.paper_tube_description === paper_tube_description)
if (descriptionsAreSame) {