fix:同类木箱兼容问题

This commit is contained in:
zhouz
2025-07-14 10:40:12 +08:00
parent 4a1b8ac17a
commit 40cca955bb
5 changed files with 83 additions and 9 deletions

View File

@@ -1,7 +1,12 @@
package org.nl.b_lms.bst.ivt.stockingivt.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo;
import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.logging.annotation.Log;
@@ -13,6 +18,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -27,6 +34,8 @@ public class BstIvtStockingivtController {
@Autowired
private IBstIvtStockingivtService bstIvtStockingivtService;
@Autowired
private IMdpbSameBoxService imdpbSameBoxService;
@GetMapping
@Log("查询备货区点位库存表")
@@ -83,7 +92,14 @@ public class BstIvtStockingivtController {
@Log("查询bom记录")
@GetMapping("/showBom2")
public ResponseEntity<Object> showBom2(@RequestParam Map param) {
return new ResponseEntity<>(bstIvtStockingivtService.showBom2(param), HttpStatus.OK);
PdmBiOrderbominfo pdmBiOrderbominfo = bstIvtStockingivtService.showBom2(param);
List<MdpbSameBox> list = imdpbSameBoxService.list(new LambdaQueryWrapper<MdpbSameBox>().eq(MdpbSameBox::getBox_code, pdmBiOrderbominfo.getProductName()));
JSONObject json = (JSONObject) JSONObject.toJSON(pdmBiOrderbominfo);
ArrayList<String> arrayList = new ArrayList<>();
list.stream().map(MdpbSameBox::getSame_box_code).forEach(arrayList::add);
json.put("sameBoxCode", arrayList);
json.put("sameBoxName", arrayList);
return new ResponseEntity<>(json, HttpStatus.OK);
}

View File

@@ -44,7 +44,9 @@ import org.nl.b_lms.sch.tasks.TwoOutBoxTask;
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueue;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl.OutBoxManageServiceImpl;
@@ -138,6 +140,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
@Autowired
private ISysParamService iSysParamService;
@Autowired
private IMdpbSameBoxService mdpbSameBoxService;
@Resource
@Qualifier("threadPoolExecutor")
private ThreadPoolExecutor pool;
@@ -491,8 +496,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
if (ObjectUtils.isEmpty(packagerelationList)) {
throw new BadRequestException("无选中子卷信息");
}
if (!packagerelationList.get(0).getBox_type().equals(whereJson.getString("checked"))){
throw new BadRequestException("子卷订单bom的木箱规格与所选木箱规格不一致,请重新操作");
List<MdpbSameBox> list = mdpbSameBoxService.list(new LambdaQueryWrapper<MdpbSameBox>().eq(MdpbSameBox::getBox_code, packagerelationList.get(0).getBox_type()));
List<MdpbSameBox> collect = list.stream().filter(row -> row.getSame_box_code().equals(whereJson.getString("checked"))).collect(Collectors.toList());
//改为支持多种木箱进行
if (!packagerelationList.get(0).getBox_type().equals(whereJson.getString("checked")) && ObjectUtil.isEmpty(collect)) {
throw new BadRequestException("子卷订单bom的木箱规格及同类木箱与所选木箱规格不符合,请重新操作");
}
//检查是否存在已分配规格的子卷号
if (packagerelationList.stream()

View File

@@ -2,6 +2,7 @@ package org.nl.b_lms.storage_manage.database.service.impl;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -12,7 +13,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo;
import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService;
import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService;
import org.nl.b_lms.storage_manage.database.service.IMdpbSameBoxService;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
import org.nl.b_lms.storage_manage.database.service.dao.MdpbSameBox;
import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbBoxtypeMapper;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.exception.BadRequestException;
@@ -20,8 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* <p>
@@ -36,6 +38,8 @@ public class MdpbBoxtypeServiceImpl extends ServiceImpl<MdpbBoxtypeMapper, MdpbB
@Autowired
private IPdmBiOrderbominfoService pdmBiOrderbominfoService;
@Autowired
private IMdpbSameBoxService mdpbSameBoxService;
@Override
public IPage<MdpbBoxtype> queryAll(Map whereJson, PageQuery page) {
// 查询条件
@@ -99,10 +103,30 @@ public class MdpbBoxtypeServiceImpl extends ServiceImpl<MdpbBoxtypeMapper, MdpbB
if (ObjectUtil.isEmpty(boxtype)) {
throw new BadRequestException("木箱编码:"+whereJson.getString("productName")+"查询木箱类型失败!");
}
//更新BOM信息
pdmBiOrderbominfoService.update(new UpdateWrapper<PdmBiOrderbominfo>().lambda()
.eq(PdmBiOrderbominfo::getMfgOrder,whereJson.getString("mfgOrder"))
.set(PdmBiOrderbominfo::getProductName, whereJson.getString("productName"))
.set(PdmBiOrderbominfo::getDescription, boxtype.getBox_name())
);
//更新该木箱对应相同木箱类型1、先删除2、再插入
//删除
mdpbSameBoxService.remove(new QueryWrapper<MdpbSameBox>().lambda().eq(MdpbSameBox::getBox_code,whereJson.getString("productName")));
ArrayList<String> sameBoxCode = (ArrayList<String>) whereJson.get("sameBoxCode");
//插入
MdpbSameBox[] array = sameBoxCode.stream().map(a -> {
MdpbSameBox mdpbSameBox = new MdpbSameBox();
mdpbSameBox.setBox_code(whereJson.getString("productName"));
mdpbSameBox.setSame_box_code(a);
MdpbBoxtype same_box_name = this.getById(a);
if (ObjectUtil.isEmpty(boxtype)) {
throw new BadRequestException("木箱编码:"+whereJson.getString("productName")+"查询木箱类型失败!");
}
mdpbSameBox.setSame_box_name(same_box_name.getBox_name());
return mdpbSameBox;
}).toArray(MdpbSameBox[]::new);
mdpbSameBoxService.saveBatch(Arrays.asList(array));
}
}

View File

@@ -500,7 +500,7 @@
<el-table-column v-if="false" prop="workorder_id" label="分切计划标识" />
<el-table-column prop="status" label="状态" :formatter="formatStatusName" />
<el-table-column prop="order_type" label="订单类型" :formatter="formatTypeName" />
<el-table-column prop="mfg_order_name" label="订单号" min-width="200">
<el-table-column prop="mfg_order_name" label="订单号" min-width="220">
<template slot-scope="scope">
<el-link type="primary" @click="toView2(scope.$index, scope.row)">{{ scope.row.mfg_order_name }}</el-link>
</template>

View File

@@ -15,11 +15,11 @@
</el-form-item>
<el-form-item label="工单号" prop="mfgOrder">
<label slot="label">工单号:</label>
<el-input v-model="form.mfgOrder" disabled clearable style="width: 300px" />
<el-input v-model="form.mfgOrder" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="木箱编码" prop="productName">
<label slot="label">木箱编码:</label>
<el-input v-model="form.productName" disabled clearable style="width: 300px" />
<el-input v-model="form.productName" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="木箱描述" prop="description">
<el-select
@@ -45,7 +45,30 @@
</el-form-item>
<el-form-item label="管芯描述" prop="carrierDescription">
<label slot="label">管芯描述:</label>
<el-input v-model="form.carrierDescription" disabled clearable style="width: 300px" />
<el-input v-model="form.carrierDescription" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="同类木箱编码" prop="sameBoxCode">
<label slot="label">同类木箱编码:</label>
<el-input v-model="form.sameBoxCode" disabled clearable style="width: 300px" />
</el-form-item>
<el-form-item label="同类木箱描述" prop="sameBoxName">
<el-select
v-model="form.sameBoxName"
placeholder="木箱描述"
style="width: 400px"
multiple
class="filter-item"
clearable
filterable
@change="hand2"
>
<el-option
v-for="item in typelist"
:key="item.box_type"
:label="item.box_name"
:value="item.box_type"
/>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -101,6 +124,9 @@ export default {
hand(value) {
this.form.productName = value
},
hand2(value) {
this.form.sameBoxCode = value
},
close() {
this.$emit('update:dialogShow', false)
this.form = {}