rev:物料参数保存报错、软废库存是否可用不一致、入库分配删除桶不生效

This commit is contained in:
2023-06-07 18:40:55 +08:00
parent 3c34900441
commit 975bd75f65
5 changed files with 76 additions and 34 deletions

View File

@@ -156,6 +156,20 @@ public class PdaBucketServiceImpl implements PdaBucketService {
//2.假如桶码没有就插入,有就更新 桶记录表 //2.假如桶码没有就插入,有就更新 桶记录表
JSONObject bucketJo = new JSONObject(); JSONObject bucketJo = new JSONObject();
if (StrUtil.isNotEmpty(bucketunique)) { if (StrUtil.isNotEmpty(bucketunique)) {
// 校验此桶是否有未完成的单据
JSONObject map = new JSONObject();
map.put("flag", "16");
map.put("bucketunique", bucketunique);
JSONArray iosList = WQL.getWO("QPADSTSETSERVICE").addParamMap(map).process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(iosList)) {
boolean is_emp = iosList.stream()
.map(row -> (JSONObject) row)
.allMatch(row -> row.getString("is_active").equals(is_active));
if (!is_emp) throw new PdaRequestException("此桶库存是否可用与选择是否可用不一致"+bucketunique+"!");
}
bucketJo = bucketRecordTable.query("bucketunique='" + bucketunique + "'").uniqueResult(0); bucketJo = bucketRecordTable.query("bucketunique='" + bucketunique + "'").uniqueResult(0);
String before_storage_qty = bucketJo.getString("storage_qty"); String before_storage_qty = bucketJo.getString("storage_qty");
bucketJo.put("storagevehicle_type", "04"); bucketJo.put("storagevehicle_type", "04");

View File

@@ -478,3 +478,20 @@
ENDSELECT ENDSELECT
ENDQUERY ENDQUERY
ENDIF ENDIF
IF 输入.flag = "16"
QUERY
SELECT
dis.*
FROM
st_ivt_iostorinvdisdtl dis
LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dis.iostorinv_id
WHERE
mst.io_type = '0'
OPTION 输入.bucketunique <> ""
dis.bucketunique = 输入.bucketunique
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -16,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.modules.system.domain.DictDetail; import org.nl.modules.system.domain.DictDetail;
import org.nl.modules.system.repository.DictDetailRepository; import org.nl.modules.system.repository.DictDetailRepository;
import org.nl.utils.SecurityUtils; import org.nl.utils.SecurityUtils;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum;
import org.nl.wms.basedata.pdm.service.WasteBallTimeService; import org.nl.wms.basedata.pdm.service.WasteBallTimeService;
import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto; import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto;
@@ -56,7 +57,7 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService {
map.put("material_code", "%" + material_code + "%"); map.put("material_code", "%" + material_code + "%");
} }
map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr()); map.put("class_ids", MaterOptTypeEnum.THW.getClass_idStr());
List<DictDetail> rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE"); List<DictDetail> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE");
Map<String, String> typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll); Map<String, String> typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll);
JSONObject allmaterialIds = WQL.getWO("PDM_WASTEBALLTIME").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); JSONObject allmaterialIds = WQL.getWO("PDM_WASTEBALLTIME").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code");
@@ -129,7 +130,7 @@ public class WasteBallTimeServiceImpl implements WasteBallTimeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(JSONObject form) { public void update(JSONObject form) {
List<String> rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); List<String> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList());
JSONObject allData = new JSONObject(); JSONObject allData = new JSONObject();
for (String key : rfType) { for (String key : rfType) {
allData.put(key,form.get(key)); allData.put(key,form.get(key));

View File

@@ -15,6 +15,7 @@ import org.nl.exception.BadRequestException;
import org.nl.modules.system.domain.DictDetail; import org.nl.modules.system.domain.DictDetail;
import org.nl.modules.system.repository.DictDetailRepository; import org.nl.modules.system.repository.DictDetailRepository;
import org.nl.modules.system.service.DictDetailService; import org.nl.modules.system.service.DictDetailService;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum;
import org.nl.wms.basedata.pdm.service.WastecchangeService; import org.nl.wms.basedata.pdm.service.WastecchangeService;
import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto; import org.nl.wms.basedata.pdm.service.dto.WastecchangeDto;
@@ -53,7 +54,6 @@ public class WastecchangeServiceImpl implements WastecchangeService {
@Autowired @Autowired
private DictDetailRepository dictDetailRepository; private DictDetailRepository dictDetailRepository;
@Override @Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) { public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String material_code = MapUtil.getStr(whereJson, "material_code"); String material_code = MapUtil.getStr(whereJson, "material_code");
@@ -97,7 +97,7 @@ public class WastecchangeServiceImpl implements WastecchangeService {
JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code"); JSONObject allmaterialIds = WQL.getWO("PDM_WASTECCHANGE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mater.material_code");
JSONArray array = allmaterialIds.getJSONArray("content"); JSONArray array = allmaterialIds.getJSONArray("content");
//label:name;value:code //label:name;value:code
List<DictDetail> rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE"); List<DictDetail> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE");
Map<String, String> typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll); Map<String, String> typeMap = rfType.stream().collect(HashMap::new, (k, v) -> k.put(v.getValue(), v.getLabel()), HashMap::putAll);
JSONArray array2 = new JSONArray(); JSONArray array2 = new JSONArray();
if (ObjectUtil.isNotEmpty(array)){ if (ObjectUtil.isNotEmpty(array)){
@@ -141,7 +141,7 @@ public class WastecchangeServiceImpl implements WastecchangeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(JSONObject form) { public void update(JSONObject form) {
List<String> rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); List<String> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList());
JSONObject allData = new JSONObject(); JSONObject allData = new JSONObject();
for (String key : rfType) { for (String key : rfType) {
allData.put(key,form.get(key)); allData.put(key,form.get(key));
@@ -254,7 +254,7 @@ public class WastecchangeServiceImpl implements WastecchangeService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JSONArray contentShift(JSONObject json) { public JSONArray contentShift(JSONObject json) {
List<String> rfType = dictDetailRepository.findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList()); List<String> rfType = SpringContextHolder.getBean(DictDetailRepository.class).findByDictName("MD_MATERIAL_WASTE_TYPE").stream().map(DictDetail::getValue).collect(Collectors.toList());
JSONArray rf_arr = new JSONArray(); JSONArray rf_arr = new JSONArray();
rfType.forEach(a->{ rfType.forEach(a->{
JSONObject json_CF = new JSONObject(); JSONObject json_CF = new JSONObject();

View File

@@ -14,7 +14,7 @@
<span class="el-dialog__title2">入库分配</span> <span class="el-dialog__title2">入库分配</span>
<span class="crud-opts-right2"> <span class="crud-opts-right2">
<!--左侧插槽--> <!--左侧插槽-->
<slot name="left" /> <slot name="left"/>
<el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button> <el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button>
</span> </span>
</div> </div>
@@ -51,10 +51,10 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center"/>
<el-table-column show-overflow-tooltip prop="pcsn" label="批次号" align="center" /> <el-table-column show-overflow-tooltip prop="pcsn" label="批次号" align="center"/>
<el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center" /> <el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="重量" align="center"/>
<el-table-column <el-table-column
show-overflow-tooltip show-overflow-tooltip
prop="assign_qty" prop="assign_qty"
@@ -69,15 +69,16 @@
label="未分配数量" label="未分配数量"
align="center" align="center"
/> />
<el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" align="center" /> <el-table-column show-overflow-tooltip prop="qty_unit_name" label="单位" align="center"/>
<el-table-column show-overflow-tooltip prop="source_bill_type_name" label="源单类型" align="center" /> <el-table-column show-overflow-tooltip prop="source_bill_type_name" label="源单类型" align="center"/>
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单编号" align="center" /> <el-table-column show-overflow-tooltip prop="source_bill_code" label="源单编号" align="center"/>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}"> <el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}">
<el-form ref="form2" :inline="true" :model="form" :rules="rules" size="mini"> <el-form ref="form2" :inline="true" :model="form" :rules="rules" size="mini">
<el-form-item label="载具号" prop="storagevehicle_code"> <el-form-item label="载具号" prop="storagevehicle_code">
<el-input v-model.trim="form.storagevehicle_code" placeholder="载具号" style="width: 200px" @blur="vehicleCheck" /> <el-input v-model.trim="form.storagevehicle_code" placeholder="载具号" style="width: 200px"
@blur="vehicleCheck"/>
</el-form-item> </el-form-item>
<el-form-item label="桶号" prop="bucketunique"> <el-form-item label="桶号" prop="bucketunique">
<el-input <el-input
@@ -87,7 +88,7 @@
class="input-with-select" class="input-with-select"
style="width: 200px" style="width: 200px"
> >
<el-button slot="append" icon="el-icon-search" @click="dialogBucket" /> <el-button slot="append" icon="el-icon-search" @click="dialogBucket"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="放入重量" prop="storage_qty"> <el-form-item label="放入重量" prop="storage_qty">
@@ -140,7 +141,7 @@
</div> </div>
<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"
@@ -203,12 +204,12 @@
border border
:header-cell-style="{background:'#f5f7fa',color:'#606266'}" :header-cell-style="{background:'#f5f7fa',color:'#606266'}"
> >
<el-table-column show-overflow-tooltip type="index" label="序号" align="center" /> <el-table-column show-overflow-tooltip type="index" label="序号" align="center"/>
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" /> <el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center"/>
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" /> <el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center"/>
<el-table-column show-overflow-tooltip prop="pcsn" label="批次" align="center" /> <el-table-column show-overflow-tooltip prop="pcsn" label="批次" align="center"/>
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="托盘号" align="center" /> <el-table-column show-overflow-tooltip prop="storagevehicle_code" label="托盘号" align="center"/>
<el-table-column show-overflow-tooltip prop="bucketunique" label="桶号" align="center" /> <el-table-column show-overflow-tooltip prop="bucketunique" label="桶号" align="center"/>
<el-table-column <el-table-column
show-overflow-tooltip show-overflow-tooltip
prop="storage_qty" prop="storage_qty"
@@ -216,25 +217,28 @@
label="重量" label="重量"
align="center" align="center"
/> />
<el-table-column show-overflow-tooltip prop="point_code" label="入库点" align="center" /> <el-table-column show-overflow-tooltip prop="point_code" label="入库点" align="center"/>
<el-table-column show-overflow-tooltip prop="struct_code" label="货位" align="center" /> <el-table-column show-overflow-tooltip prop="struct_code" label="货位" align="center"/>
<el-table-column align="center" label="操作" width="190" fixed="right"> <el-table-column align="center" label="操作" width="190" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover v-model="scope.row.pop" placement="top" width="180" trigger="manual"> <el-popover v-model="scope.row.pop" placement="top" width="180" trigger="manual">
<p>{{ '是否确认删除桶明细?' }}</p> <p>{{ '是否确认删除桶明细?' }}</p>
<div style="text-align: right; margin: 0"> <div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="doCancel(scope.row)">取消</el-button> <el-button size="mini" type="text" @click="doCancel(scope.row)">取消</el-button>
<el-button type="primary" size="mini" @click.native.prevent="deleteRow(scope.$index, form.tableMater)">确定</el-button> <el-button type="primary" size="mini" @click.native.prevent="deleteRow(scope.$index, form.tableMater)">
确定
</el-button>
</div> </div>
<el-button slot="reference" :disabled="scope.row.struct_code !== '' && scope.row.struct_code" type="danger" icon="el-icon-delete" size="mini" @click="toDelete(scope.row)" /> <el-button slot="reference" :disabled="scope.row.struct_code !== '' && scope.row.struct_code"
type="danger" icon="el-icon-delete" size="mini" @click="toDelete(scope.row)"/>
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<StructDiv ref="child" :dialog-show.sync="structShow" :sect-prop="sectProp" @tableChanged="tableChanged" /> <StructDiv ref="child" :dialog-show.sync="structShow" :sect-prop="sectProp" @tableChanged="tableChanged"/>
<BucketDialog :dialog-show.sync="bucketShow" :bucket-prop="bucketProp" @bucketChange="bucketChange" /> <BucketDialog :dialog-show.sync="bucketShow" :bucket-prop="bucketProp" @bucketChange="bucketChange"/>
</el-dialog> </el-dialog>
</template> </template>
@@ -330,7 +334,8 @@ export default {
}) })
}, },
toDelete(data) { toDelete(data) {
data.pop = true this.$set(data, 'pop', true)
// data.pop = true
}, },
close() { close() {
this.form.tableMater = [] this.form.tableMater = []
@@ -395,7 +400,8 @@ export default {
return return
} }
dis_dtl.storagevehicle_code = this.form.storagevehicle_code dis_dtl.storagevehicle_code = this.form.storagevehicle_code
dis_dtl.pop = false // dis_dtl.pop = false
this.$set(dis_dtl, 'pop', false)
this.form.tableMater.splice(this.form.tableMater.length, 0, dis_dtl) this.form.tableMater.splice(this.form.tableMater.length, 0, dis_dtl)
if (this.form.dtl_row.assign_qty) { if (this.form.dtl_row.assign_qty) {
this.form.dtl_row.assign_qty = parseFloat(this.form.dtl_row.assign_qty) + parseFloat(this.form.storage_qty) this.form.dtl_row.assign_qty = parseFloat(this.form.dtl_row.assign_qty) + parseFloat(this.form.storage_qty)
@@ -444,6 +450,7 @@ export default {
}) })
}, },
deleteRow(index, rows) { deleteRow(index, rows) {
debugger
// 如果桶状态不是生成调后台逻辑 // 如果桶状态不是生成调后台逻辑
if (rows[index].status !== '01') { if (rows[index].status !== '01') {
crudRawAssist.deleteDisDtl(rows[index]).then(res => { crudRawAssist.deleteDisDtl(rows[index]).then(res => {
@@ -453,9 +460,11 @@ export default {
crudRawAssist.getDisDtl(this.form.dtl_row).then(res => { crudRawAssist.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res this.form.tableMater = res
}) })
rows[index].pop = false // rows[index].pop = false
this.$set(rows[index], 'pop', false)
}).catch(err => { }).catch(err => {
rows[index].pop = false // rows[index].pop = false
this.$set(rows[index], 'pop', false)
return return
}) })
} }
@@ -553,7 +562,8 @@ export default {
} }
}, },
doCancel(data) { doCancel(data) {
data.pop = false this.$set(data, 'pop', false)
// data.pop = false
}, },
unDivStruct() { unDivStruct() {
if (this.form.tableMater.length <= 0) { if (this.form.tableMater.length <= 0) {