opt:优化现场问题;

This commit is contained in:
2026-04-23 15:38:56 +08:00
parent e260b5a3ce
commit e3e38e53df
10 changed files with 484 additions and 84 deletions

View File

@@ -70,7 +70,7 @@ public class Structattr implements Serializable {
private String stor_name;
/**
* 仓库类型
* 仓库类型 =1 ,是专门放超托的托盘;
*/
private String stor_type;
@@ -80,7 +80,7 @@ public class Structattr implements Serializable {
private Integer capacity;
/**
* 宽度
* 宽度 width =1 专门放蝴蝶龙托盘起点是H1开头的
*/
private Integer width;
@@ -224,6 +224,8 @@ public class Structattr implements Serializable {
*/
private String ext_id;
private String placement_type;
/**
* 关联货位1
*/

View File

@@ -16,7 +16,9 @@ import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper;
import org.nl.wms.ext_manage.service.WmsToErpService;
import org.nl.wms.sch_manage.service.ISchBasePointService;
@@ -30,10 +32,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -57,6 +56,10 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
@Autowired
private ISchBasePointService iSchBasePointService;
@Autowired
private IStructattrService iStructattrService;
@Override
public IPage<MdMeMaterialbase> queryAll(Map whereJson, PageQuery page) {
// 查询条件
@@ -174,13 +177,146 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
return one;
}
/**
* 仓位导入Excel仅需一列仓位编码
* 自动填充规则基于已有 INSERT 数据分析:
* - 库区1BC / 1楼半成品
* - 仓库firstfloorBC / 1楼半成品
* - 块5
* - 排/列/层从编码最后6位解析前2排中2列后2层
* - 其他字段采用固定值或 null
*/
@Transactional
@Override
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
try (InputStream inputStream = file.getInputStream()) {
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
List<List<Object>> rows = excelReader.read();
if (rows.size() <= 1) {
throw new BadRequestException("Excel 数据为空");
}
List<Structattr> insertList = new ArrayList<>();
Set<String> existCodesInFile = new HashSet<>();
final String SECT_ID = "1985610807760785408";
final String SECT_CODE = "1BC";
final String SECT_NAME = "1楼半成品";
final String STOR_ID = "1985609997907791872";
final String STOR_CODE = "firstfloorBC";
final String STOR_NAME = "1楼半成品";
final String STOR_TYPE = "1";
final int BLOCK_NUM = 5;
final String PLACEMENT_TYPE = "01";
final String IS_TEMPSTRUCT = "0";
final String LOCK_TYPE = "0";
final int IS_USED = 0;
// ================================================
for (int i = 1; i < rows.size(); i++) {
List<Object> row = rows.get(i);
if (row == null || row.isEmpty()) continue;
Object codeObj = row.get(0);
if (codeObj == null) continue;
String structCode = String.valueOf(codeObj).trim();
if (structCode.isEmpty()) continue;
if (existCodesInFile.contains(structCode)) continue;
Structattr exist = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, structCode)
);
if (exist != null) continue;
existCodesInFile.add(structCode);
if (structCode.length() < 6) {
throw new BadRequestException("仓位编码长度不足6位无法解析" + structCode);
}
String suffix = structCode.substring(structCode.length() - 6);
if (!suffix.matches("\\d{6}")) {
throw new BadRequestException("仓位编码最后6位必须为数字" + structCode);
}
int rowNum, colNum, layerNum;
try {
rowNum = Integer.parseInt(suffix.substring(0, 2));
colNum = Integer.parseInt(suffix.substring(2, 4));
layerNum = Integer.parseInt(suffix.substring(4, 6));
} catch (NumberFormatException e) {
throw new BadRequestException("解析排/列/层数字失败:" + structCode);
}
String structName = rowNum + "" + colNum + "" + layerNum + "";
Structattr dao = new Structattr();
dao.setStruct_id(IdUtil.getStringId());
dao.setStruct_code(structCode);
dao.setStruct_name(structCode);
dao.setSimple_name(structName);
// 库区
dao.setSect_id(SECT_ID);
dao.setSect_code(SECT_CODE);
dao.setSect_name(SECT_NAME);
// 仓库
dao.setStor_id(STOR_ID);
dao.setStor_code(STOR_CODE);
dao.setStor_name(STOR_NAME);
dao.setStor_type(STOR_TYPE);
// 排、列、层、块
dao.setRow_num(rowNum);
dao.setCol_num(colNum);
dao.setLayer_num(layerNum);
dao.setBlock_num(BLOCK_NUM);
dao.setPlacement_type(PLACEMENT_TYPE);
dao.setIs_tempstruct(IS_TEMPSTRUCT);
dao.setLock_type(LOCK_TYPE);
dao.setIs_used(true);
dao.setCapacity(null);
dao.setWidth(null);
dao.setHeight(null);
dao.setZdepth(null);
dao.setWeight(null);
dao.setXqty(null);
dao.setYqty(null);
dao.setZqty(null);
dao.setIs_zdepth(null);
dao.setStoragevehicle_code(null);
dao.setStoragevehicle_type(null);
dao.setStoragevehicle_qty(null);
dao.setTask_code(null);
dao.setInv_type(null);
dao.setInv_id(null);
dao.setInv_code(null);
dao.setExt_id(null);
String remark = structCode.substring(2);
String prefixForRemark1 = remark.substring(0, remark.length() - 6);
int newCol = colNum + 1;
if (newCol > 99) {
throw new BadRequestException("列号+1后超出范围>99" + structCode);
}
String newSixDigits = String.format("%02d", rowNum) +
String.format("%02d", newCol) +
String.format("%02d", layerNum);
String remark1 = prefixForRemark1 + newSixDigits;
dao.setRemark(remark);
dao.setRemark1(remark1);
dao.setCreate_id("1");
dao.setCreate_name("Admin");
dao.setCreate_time(DateUtil.now());
dao.setUpdate_id(null);
dao.setUpdate_name(null);
dao.setUpdate_time(null);
insertList.add(dao);
}
if (!insertList.isEmpty()) {
iStructattrService.saveBatch(insertList);
}
} catch (Exception ex) {
throw new BadRequestException("导入失败:" + ex.getMessage());
}
}
/**
* 点位
*/
@Transactional
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
public void excelImport1(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
try {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = ExcelUtil.getReader(inputStream);

View File

@@ -48,6 +48,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -93,21 +94,51 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
String layer_num = (String) whereJson.get("layer_num");
String is_used = (String) whereJson.get("is_used");
String is_have = (String) whereJson.get("is_have");
LambdaQueryWrapper<Structattr> queryWrapper = new LambdaQueryWrapper<>();
return structattrMapper.selectPage(new Page<>(page.getPage() + 1 ,page.getSize()), new LambdaQueryWrapper<Structattr>()
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_code, search)
.like(StrUtil.isNotEmpty(search),Structattr::getStruct_name, search)
.eq(StrUtil.isNotEmpty(stor_id),Structattr::getStor_id, stor_id)
.eq(StrUtil.isNotEmpty(sect_id),Structattr::getSect_id, sect_id)
.eq(StrUtil.isNotEmpty(sect_code),Structattr::getSect_code, sect_code)
.eq(StrUtil.isNotEmpty(lock_type),Structattr::getLock_type, lock_type)
.eq(StrUtil.isNotEmpty(layer_num),Structattr::getLayer_num, layer_num)
.eq(StrUtil.isNotEmpty(is_used),Structattr::getIs_used, is_used)
.isNull("1".equals(is_have),Structattr::getStoragevehicle_code)
.isNotNull("2".equals(is_have),Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getStruct_code)
);
if (StrUtil.isNotEmpty(search)) {
if (search.contains("CT")) {
String suffix = search.substring(search.length() - 6);
int rowNum = Integer.parseInt(suffix.substring(0, 2));
int colNum = Integer.parseInt(suffix.substring(2, 4));
int layerNum = Integer.parseInt(suffix.substring(4, 6));
String remark = search.substring(2);
String prefixForRemark1 = remark.substring(0, remark.length() - 6);
int newCol = colNum + 1;
if (newCol > 99) {
throw new BadRequestException("列号+1后超出范围>99" + search);
}
String newSixDigits = String.format("%02d", rowNum) +
String.format("%02d", newCol) +
String.format("%02d", layerNum);
String remark1 = prefixForRemark1 + newSixDigits;
queryWrapper.and(wrapper ->
wrapper.like(Structattr::getStruct_code, remark)
.or()
.like(Structattr::getStruct_code, remark1).or()
.like(Structattr::getStruct_name, search)
);
} else {
queryWrapper.and(wrapper ->
wrapper.like(Structattr::getStruct_code, search)
.or()
.like(Structattr::getStruct_code, search).or()
.like(Structattr::getStruct_name, search)
);
}
}
queryWrapper.eq(StrUtil.isNotEmpty(stor_id), Structattr::getStor_id, stor_id)
.eq(StrUtil.isNotEmpty(sect_id), Structattr::getSect_id, sect_id)
.eq(StrUtil.isNotEmpty(sect_code), Structattr::getSect_code, sect_code)
.eq(StrUtil.isNotEmpty(lock_type), Structattr::getLock_type, lock_type)
.eq(StrUtil.isNotEmpty(layer_num), Structattr::getLayer_num, layer_num)
.eq(StrUtil.isNotEmpty(is_used), Structattr::getIs_used, is_used)
.isNull("1".equals(is_have), Structattr::getStoragevehicle_code)
.isNotNull("2".equals(is_have), Structattr::getStoragevehicle_code)
.orderByAsc(Structattr::getStruct_code);
return structattrMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper);
}
@Override
@@ -171,7 +202,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
LambdaUpdateWrapper<Structattr> lambdaUpdateWrapper = new LambdaUpdateWrapper<Structattr>();
String struct_code = dto.getStruct_code();
Structattr structattr = this.findByCode(struct_code);
if (structattr != null && !dto.getStruct_id().equals(structattr.getStruct_id())) {
@@ -185,6 +216,13 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
dto.setUpdate_time(now);
dto.setUpdate_id(currentUserId);
dto.setUpdate_name(nickName);
if (ObjectUtil.isEmpty(dto.getWidth())) {
lambdaUpdateWrapper.set(Structattr::getWidth, null);
}
if (ObjectUtil.isEmpty(dto.getStoragevehicle_code())) {
lambdaUpdateWrapper.set(Structattr::getStoragevehicle_code, null);
}
lambdaUpdateWrapper.eq(Structattr::getStruct_id, dto.getStruct_id());
// Sectattr sectattr = iSectattrService.findById(dto.getSect_id());
// BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById(sectattr.getStor_id());
// dto.setSect_code(sectattr.getSect_code());
@@ -192,7 +230,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
// dto.setStor_id(bsrealStorattr.getStor_id());
// dto.setStor_code(bsrealStorattr.getStor_code());
// dto.setStor_name(bsrealStorattr.getStor_name());
structattrMapper.updateById(dto);
structattrMapper.update(dto, lambdaUpdateWrapper);
}
@Override
@@ -230,43 +268,37 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
@Override
public void updateStatusByCode(String operate, JSONObject jsonObject) {
//operate:0生成、1单据确认、2取消分配
switch (operate){
String structCode = jsonObject.getString("struct_code");
boolean isMultiple = structCode != null && structCode.contains(",");
LambdaUpdateWrapper<Structattr> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(Structattr::getInv_id, jsonObject.getString("inv_id"))
.set(Structattr::getInv_code, jsonObject.getString("inv_code"))
.set(Structattr::getInv_type, jsonObject.getString("inv_type"));
if (isMultiple) {
List<String> structCodes = Arrays.asList(structCode.split(","));
wrapper.in(Structattr::getStruct_code, structCodes);
} else {
wrapper.eq(Structattr::getStruct_code, structCode);
}
switch (operate) {
case "0":
//锁定仓位
this.update(new LambdaUpdateWrapper<>(Structattr.class)
.set(Structattr::getInv_id,jsonObject.getString("inv_id"))
.set(Structattr::getInv_code,jsonObject.getString("inv_code"))
.set(Structattr::getInv_type,jsonObject.getString("inv_type"))
.set(Structattr::getLock_type, jsonObject.getString("lock_type"))
.eq(Structattr::getStruct_code,jsonObject.getString("struct_code"))
);
wrapper.set(Structattr::getLock_type, jsonObject.getString("lock_type"));
this.update(wrapper);
break;
case "1":
//完成任务,解锁仓位绑定载具号
this.update(new LambdaUpdateWrapper<>(Structattr.class)
.set(Structattr::getInv_id,jsonObject.getString("inv_id"))
.set(Structattr::getInv_code,jsonObject.getString("inv_code"))
.set(Structattr::getInv_type,jsonObject.getString("inv_type"))
.set(Structattr::getStoragevehicle_code,jsonObject.getString("storagevehicle_code"))
.set(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getStruct_code,jsonObject.getString("struct_code"))
);
wrapper.set(Structattr::getStoragevehicle_code, jsonObject.getString("storagevehicle_code"))
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"));
this.update(wrapper);
break;
case "2":
//解锁仓位
this.update(new LambdaUpdateWrapper<>(Structattr.class)
.set(Structattr::getInv_id,jsonObject.getString("inv_id"))
.set(Structattr::getInv_code,jsonObject.getString("inv_code"))
.set(Structattr::getInv_type,jsonObject.getString("inv_type"))
.set(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getStruct_code,jsonObject.getString("struct_code"))
);
wrapper.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"));
this.update(wrapper);
break;
}
}
@Override
public void updateLock(List<JSONObject> updateAttrList) {
List<Structattr> attrList = this.list(

View File

@@ -2,6 +2,7 @@ package org.nl.wms.ext_manage.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.K;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.ext_manage.service.AcsToWmsService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -34,4 +35,6 @@ public class AcsToWmsController {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
}

View File

@@ -20,4 +20,12 @@ public interface AcsToWmsService {
* @return Map<String, Object>
*/
Map<String, Object> receiveTaskStatusAcs(String string);
}

View File

@@ -3,12 +3,14 @@ package org.nl.wms.ext_manage.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.ext_manage.enums.ResultAcsStatus;
import org.nl.wms.ext_manage.service.AcsToWmsService;
import org.nl.wms.sch_manage.enums.PointStatusEnum;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
@@ -27,6 +29,9 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -70,6 +75,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private SchBasePointMapper schBasePointMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
@@ -80,6 +88,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String finish_code=null;
//返回处理失败的任务
JSONArray errArr = new JSONArray();
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
String task_id = row.getString("task_id");
@@ -88,6 +99,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
try {
if (tryLock) {
SchBaseTask taskObj = iSchBaseTaskService.getById(task_id);
if (taskObj == null) {
return result;
}
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode()) || taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
return result;
}
// acs反馈的任务类型
String acs_task_status = row.getString("task_status");
TaskStatus status;
@@ -147,9 +164,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
}
}
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "任务状态反馈成功!");
result.put("data", data);
result.put("finish_code",finish_code);
result.put("errArr", errArr);

View File

@@ -633,7 +633,6 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
.sect_code(param.getString("sect_code"))
.stor_code(param.getString("stor_code"))
.storagevehicle_code(param.getString("storagevehicle_code"))
.storagevehicle_type(param.getString("storagevehicle_type"))
.suitable_car(suitable_car)
.strategyMaters(maters)
.storagevehicle_type(storagevehicle_stype)
@@ -668,7 +667,12 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
//锁定货位
IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinvId);
JSONObject lock_map = new JSONObject();
lock_map.put("struct_code", struct_code);
String lockStructCode =struct_code;
//超托需要更新多个库位
if (struct_code.contains("CT")) {
lockStructCode = String.join(",",struct_code,struct.getRemark(), struct.getRemark1());
}
lock_map.put("struct_code", lockStructCode);
lock_map.put("inv_id", ioStorInv.getIostorinv_id());
lock_map.put("inv_code", ioStorInv.getBill_code());
lock_map.put("inv_type", ioStorInv.getBill_type());
@@ -973,7 +977,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
//获取单据编号
String bill_code = ioStorInv.getBill_code();
String source_name = ioStorInv.getSource_name();
if (!ResultAcsStatus.EXECUTING.getCode().equals(task.getTask_status())) {
//acs完成任务状态为5,PC端完成为0
if ("5".equals(task.getTask_status()) || "0".equals(task.getTask_status())) {
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", structCode);
@@ -1025,7 +1030,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
}
//回传给wms
TOWMSMSG towmsmsg = new TOWMSMSG();
towmsmsg.setType("0");
towmsmsg.setType(task.getConfig_code().contains("In") ? "0" : "1");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus(ResultAcsStatus.EXECUTING.getCode().equals(task.getTask_status()) ? "1" : "200");
JSONObject jo = new JSONObject();

View File

@@ -54,7 +54,6 @@ import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.wbwms.service.IWmsToWmsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -1363,30 +1362,40 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
}
// 完成当前任务对应的所有分配明细
for (IOStorInvDis ioStorInvDis : disList) {
ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成"))
.eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id()));
ioStorInvDisMapper.update(ioStorInvDis, new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
.eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id()));
}
IOStorInvDis item = disList.get(0);
//获取出入库单标识
String iostorinv_id=item.getIostorinv_id();
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
String iostorinv_id = item.getIostorinv_id();
IOStorInv ioStorInv = ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id, iostorinv_id));
//获取单据编号
String bill_code=ioStorInv.getBill_code();
String bill_code = ioStorInv.getBill_code();
//
String source_name=ioStorInv.getSource_name();
String source_name = ioStorInv.getSource_name();
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", item.getStruct_code());
finish_map.put("storagevehicle_code",null);
String lockStructCode = item.getStruct_code();
//超托需要更新多个库位
if (item.getStruct_code().contains("CT")) {
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>().eq(Structattr::getStruct_code, item.getStruct_code()));
if (structattr == null) {
throw new BadRequestException("未找到库位信息");
}
lockStructCode = String.join(",",item.getStruct_code(),structattr.getRemark(), structattr.getRemark1());
}
finish_map.put("struct_code", lockStructCode);
finish_map.put("storagevehicle_code", null);
finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("1",finish_map);
iStructattrService.updateStatusByCode("1", finish_map);
//终点修改点位状态
SchBasePoint point_code2=new SchBasePoint();
point_code2=iSchBasePointService.getByCode(task.getPoint_code2());
SchBasePoint point_code2 = new SchBasePoint();
point_code2 = iSchBasePointService.getByCode(task.getPoint_code2());
point_code2.setVehicle_code(task.getVehicle_code());
point_code2.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
point_code2.setLock_up(false);