add:增加一键解锁点位功能

This commit is contained in:
2026-06-16 17:59:26 +08:00
parent 9c4e0f16ab
commit 8a075f3023
8 changed files with 150 additions and 24 deletions

View File

@@ -164,36 +164,89 @@ https://juejin.cn/post/6844903775631572999
<!--生产环境:打印控制台和输出到文件-->
<springProfile name="prod">
<root level="info">
<root level="debug">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="CONSOLE"/>
</root>
<logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</root>
<logger name="jdbc" level="ERROR" additivity="true">
</logger>
<logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.reflections.Reflections" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">
<appender-ref ref="asyncLuceneAppender"/>
<appender-ref ref="asyncFileAppender"/>
</logger>
<logger name="org.springframework" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.baomidou.dynamic.datasource.DynamicRoutingDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterPubSubConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.connection.pool.MasterConnectionPool" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson.Version" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.alibaba.druid.pool.DruidDataSource" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.config.RedisConfig" level="INFO" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.netty" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="io.lettuce" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.fasterxml" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.quartz" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.google" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.redisson" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="springfox" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.nl.modules.wql" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="log4jdbc" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.springframework.data" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="nl.basjes" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.jinterop" level="ERROR" additivity="true">
<appender-ref ref="asyncFileAppender"/>
<logger name="com.yomahub.tlog.id.snowflake.UniqueIdGenerator" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="com.yomahub.tlog.core.rpc.TLogRPCHandler" level="ERROR" additivity="true">
<appender-ref ref="CONSOLE"/>
</logger>
</springProfile>

View File

@@ -128,8 +128,8 @@
size="mini"
type="warning"
icon="el-icon-circle-close"
:loading="downloadLoading"
@click="relse"
:disabled="crud.selections.length === 0"
@click="relse(crud.selections)"
>一键解锁出库点
</el-button>
<el-button
@@ -513,8 +513,12 @@ export default {
}
})
},
relse() {
crudSchBaseRegion.relse()
relse(data) {
const ids = data.map(r => r.point_code)
crudSchBasePoint.relse(ids).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
},
getPointTypeList(id, flag) {
crudSchBaseRegion.getPointTypeSelectById(id).then(res => {

View File

@@ -56,4 +56,12 @@ export function changeLock(data) {
})
}
export default { add, edit, del, changeUsed, getPointList, getRegionPoints, changeLock }
export function relse(data) {
return request({
url: 'api/schBasePoint/relse',
method: 'post',
data
})
}
export default { add, edit, del, changeUsed, getPointList, getRegionPoints, changeLock, relse }

View File

@@ -197,9 +197,9 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
}
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 SECT_ID = "2005471899915784192";
final String SECT_CODE = "1BCDJQ";
final String SECT_NAME = "1楼半成品待检区";
final String STOR_ID = "1985609997907791872";
final String STOR_CODE = "firstfloorBC";
final String STOR_NAME = "1楼半成品";

View File

@@ -37,6 +37,7 @@ import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.record.service.IStIvtStructivtflowService;
import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow;
import org.nl.wms.warehouse_manage.record.service.dao.mapper.StIvtStructivtflowMapper;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.springframework.beans.factory.annotation.Autowired;
@@ -82,10 +83,11 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
@Autowired
private IStSectStrategyService iStSectStrategyService;
@Autowired
private StIvtStructivtflowMapper stIvtStructivtflowMapper;
@Override
public IPage<Structattr> queryAll(Map whereJson, PageQuery page) {
String search = (String) whereJson.get("search");
String stor_id = (String) whereJson.get("stor_id");
String sect_id = (String) whereJson.get("sect_id");
@@ -146,6 +148,29 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
return structattrMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper);
}
@Transactional(rollbackFor = Exception.class)
public void syncStorageVehicleCode() {
//查询st_ivt_structivtflow表范围为update_time大于'2026-06-14 10:18:00'的数据,
//根据update_time升序遍历集合如果growth=true则代表新增库存把vehicle_code更新到st_ivt_structattr表的storagevehicle_code字段中
//如果growth==false则代表减少库存把vehicle_code更新到st_ivt_structattr表的storagevehicle_code字段为NULL
List<StIvtStructivtflow> list = stIvtStructivtflowMapper.selectList(
new LambdaQueryWrapper<StIvtStructivtflow>()
.gt(StIvtStructivtflow::getUpdate_time, "2026-06-14 10:18:00")
.orderByAsc(StIvtStructivtflow::getUpdate_time)
);
for (StIvtStructivtflow r : list) {
LambdaUpdateWrapper<Structattr> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(Structattr::getUpdate_time, DateUtil.now());
if (Boolean.TRUE.equals(r.getGrowth())) {
updateWrapper.set(Structattr::getStoragevehicle_code, r.getVehicle_code());
} else {
updateWrapper.set(Structattr::getStoragevehicle_code, null);
}
updateWrapper.eq(Structattr::getStruct_code, r.getStruct_code());
this.update(updateWrapper);
}
}
/**
* 超托库位搜索条件
*/
@@ -255,6 +280,9 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
if (ObjectUtil.isEmpty(dto.getWidth())) {
lambdaUpdateWrapper.set(Structattr::getWidth, null);
}
if (ObjectUtil.isEmpty(dto.getWidth())) {
lambdaUpdateWrapper.set(Structattr::getWidth, null);
}
if (ObjectUtil.isEmpty(dto.getStoragevehicle_code())) {
lambdaUpdateWrapper.set(Structattr::getStoragevehicle_code, null);
}

View File

@@ -108,4 +108,11 @@ public class SchBasePointController {
schBasePointService.changeLock(points);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@Log("释放出库点")
@PostMapping("/relse")
public ResponseEntity<Object> relse(@RequestBody List<String> pointCodes) {
schBasePointService.relse(pointCodes);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -113,4 +113,11 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
*/
List<SchBasePoint> checkEndPointTask(String regionCode, String getLockType, String sortType, String
pointType, String pointCode, String vehicleIsNull, boolean isFourPoint);
/**
* 释放出库点
*
* @param pointCodes 点位编码列表
*/
void relse(List<String> pointCodes);
}

View File

@@ -217,6 +217,25 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
return pointMapper.selectByIdLock(id);
}
@Override
@Transactional
public void relse(List<String> pointCodes) {
String now = DateUtil.now();
String userId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
LambdaUpdateWrapper<SchBasePoint> wrapper = new LambdaUpdateWrapper<>();
wrapper.in(SchBasePoint::getPoint_code, pointCodes)
.set(SchBasePoint::getLock_up, false)
.set(SchBasePoint::getPoint_status, "1")
.set(SchBasePoint::getIs_has_workder,"0")
.set(SchBasePoint::getVehicle_code, null)
.set(SchBasePoint::getUpdate_id, userId)
.set(SchBasePoint::getUpdate_name, nickName)
.set(SchBasePoint::getUpdate_time, now);
this.update(wrapper);
log.info(nickName+"在:"+now+",手动一键解锁了出库区点位:"+pointCodes);
}
@Override
public void unLockPoint(String point_code) {
this.update(