This commit is contained in:
xd 2024-03-18 12:40:22 +08:00
parent c227a8c401
commit be7bea1ca5
8 changed files with 79 additions and 27 deletions

View File

@ -6,9 +6,11 @@ import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.core.redis.RedisLock;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.storageLocation.domain.StorageLocation;
import com.ruoyi.storageLocation.domain.StorageSelected;
import com.ruoyi.storageLocation.service.StorageLocationService;
@ -30,6 +32,9 @@ public class storageLocationController extends BaseController
@Autowired
private RedisCache redisCache;
@Autowired
private RedisLock redisLock;
@Autowired
private StorageLocationService storageLocationService;
@ -126,7 +131,8 @@ public class storageLocationController extends BaseController
if(StringUtils.isNotNull(kw_user_name)&&!user_name.equals(kw_user_name)){
return error("当前库位有人正在操作,请勿操作!");
}else{
redisCache.setCacheObject(getLocationZyCacheKey(materialBh),user_name,Integer.valueOf(storageExpire), TimeUnit.SECONDS);
redisLock.getLock(getLocationZyCacheKey(materialBh), Integer.valueOf(storageExpire), user_name);
//redisCache.setCacheObject(getLocationZyCacheKey(materialBh),user_name,Integer.valueOf(storageExpire), TimeUnit.SECONDS);
return success();
}
}
@ -199,7 +205,7 @@ public class storageLocationController extends BaseController
String kw_user_name = redisCache.getCacheObject(getLocationLyCacheKey(materialBh));
if(StringUtils.isNotNull(kw_user_name)&&!user_name.equals(kw_user_name)){
return error("该库位当前有人正在操作,请勿操作!");
return error("该库位当前有人正在领用操作,请勿操作!");
}else{
// 判断已选库位表是否存在库位信息
StorageSelected storageSelected = storageLocationService.hasStorageLocation(materialBh);
@ -211,9 +217,11 @@ public class storageLocationController extends BaseController
}
}else{
// 保存至已选库位表并缓存
redisCache.setCacheObject(getLocationLyCacheKey(materialBh),user_name);
Boolean lock = redisLock.getLock(getLocationLyCacheKey(materialBh), -1, user_name);
if(lock){
storageLocationService.saveStorageLocation(user_name,materialBh);
}
}
return success();
}
}
@ -244,15 +252,15 @@ public class storageLocationController extends BaseController
public AjaxResult confirmStorageLocation(@RequestBody String [] materialBhArr)
{
storageLocationService.confirmStorageLocation(materialBhArr);
List<String> materialBhList = Arrays.asList(materialBhArr);
storageLocationService.confirmStorageLocation(materialBhList);
String user_name = getLoginUser().getUsername();//当前登陆者
storageLocationService.deleteBatchStorageLocation(user_name,materialBhList);
List<String> list = new ArrayList<String>();
for(String materialBh:materialBhArr){
list.add(getLocationZyCacheKey(materialBh));
redisCache.deleteObject(getLocationZyCacheKey(materialBh));// 清空占用缓存keys
}
Collection<List<String>> collection = new ArrayList<>();
collection.add(list);
redisCache.deleteObject(collection);// 清空占用缓存keys
return success();
}

View File

@ -6,7 +6,7 @@ spring:
# 主库数据源
master:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://192.168.9.66:1433;DatabaseName=ry-vue
url: jdbc:sqlserver://192.168.9.130:1433;DatabaseName=ry-vue
username: sa
password: Itcenter110-
# 红本数据库数据源
@ -23,7 +23,7 @@ spring:
enabled: true
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
# 测试数据库
# url: jdbc:sqlserver://192.168.9.66:1433;DatabaseName=jn_quot
# url: jdbc:sqlserver://192.168.9.130:1433;DatabaseName=jn_quot
# 正式数据库
url: jdbc:sqlserver://192.168.9.99:1433;DatabaseName=jn_quot
username: sa

View File

@ -35,7 +35,7 @@ public interface StorageLocationMapper
* 确认完成认领
* @param materialBhArr
*/
void confirmStorageLocation(String[] materialBhArr);
void confirmStorageLocation(List<String> materialBhArr);
/**
* 判断已选库位表是否存在库位信息
@ -71,4 +71,11 @@ public interface StorageLocationMapper
* @return
*/
List<StorageSelected> selectStorageSelectedLocationList();
/**
* 批量删除已选库位表记录
* @param userName
* @param materialBhList
*/
void deleteBatchStorageLocation(@Param("userName") String userName, @Param("list") List<String> materialBhList);
}

View File

@ -35,7 +35,7 @@ public interface StorageLocationService
* 确认完成认领
* @param materialBhArr
*/
void confirmStorageLocation(String[] materialBhArr);
void confirmStorageLocation(List<String> materialBhArr);
/**
* 判断已选库位表是否存在库位信息
@ -71,4 +71,11 @@ public interface StorageLocationService
* @return
*/
List<StorageSelected> selectStorageSelectedLocationList();
/**
* 批量删除已选库位表记录
* @param user_name
* @param materialBhList
*/
void deleteBatchStorageLocation(String user_name, List<String> materialBhList);
}

View File

@ -54,7 +54,7 @@ public class StorageLocationServiceImpl implements StorageLocationService
* @param materialBhArr
*/
@Override
public void confirmStorageLocation(String[] materialBhArr) {
public void confirmStorageLocation(List<String> materialBhArr) {
storageLocationMapper.confirmStorageLocation(materialBhArr);
}
@ -113,4 +113,14 @@ public class StorageLocationServiceImpl implements StorageLocationService
public List<StorageSelected> selectStorageSelectedLocationList() {
return storageLocationMapper.selectStorageSelectedLocationList();
}
/**
* 批量删除已选库位表记录
* @param userName
* @param materialBhList
*/
@Override
public void deleteBatchStorageLocation(String userName, List<String> materialBhList) {
storageLocationMapper.deleteBatchStorageLocation(userName,materialBhList);
}
}

View File

@ -41,12 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where materialBh = #{materialBh}
</update>
<update id="confirmStorageLocation">
<update id="confirmStorageLocation" parameterType="java.util.List">
update storageLocation set materialState = '0'
<where>
materialBh
<foreach collection="array" item="materialBh" index="index" open="in (" close=")" separator=",">
#{materialBh}
<foreach collection="list" item="item" index="index" open="in (" close=")" separator=",">
#{item}
</foreach>
</where>
</update>
@ -96,4 +96,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select user_name,material_bh
from storageSelected
</select>
<delete id="deleteBatchStorageLocation">
delete from storageSelected where user_name = #{userName}
and material_bh
<foreach collection="list" item="item" index="index" open="in (" close=")" separator=",">
#{item}
</foreach>
</delete>
</mapper>

View File

@ -4,13 +4,13 @@
<el-tab-pane label="库位查看" name="locationShow">
<el-row :gutter="10" style="letter-spacing: 5px;">
<el-col :span="8">
<div class="grid-content bg-purpleA">黄色线芯A区({{countA}})</div>
<div class="grid-content bg-purpleA" @click="refresh()">黄色线芯A区(可用{{countA}})</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purpleB">绿色线芯B区({{countB}})</div>
<div class="grid-content bg-purpleB" @click="refresh()">绿色线芯B区(可用{{countB}})</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purpleC">红色线芯C区({{countC}})</div>
<div class="grid-content bg-purpleC" @click="refresh()">红色线芯C区(可用{{countC}})</div>
</el-col>
</el-row>
<el-row :gutter="10">
@ -416,6 +416,7 @@
display: flex; /* 设置为 Flexbox */
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
cursor: pointer; /* 将鼠标形状改为指针形状 */
}
.bg-purpleA {
background: #e6a700;
@ -501,18 +502,23 @@
computed:{
countA(){
// 使 find
return this.materialDetailA.filter(task => task.materialState === '0').length;
return this.materialDetailA.filter(task => task.materialState === '1').length;
},
countB(){
// 使 find
return this.materialDetailB.filter(task => task.materialState === '0').length;
return this.materialDetailB.filter(task => task.materialState === '1').length;
},
countC(){
// 使 find
return this.materialDetailC.filter(task => task.materialState === '0').length;
return this.materialDetailC.filter(task => task.materialState === '1').length;
}
},
methods: {
/*刷新库位信息*/
refresh(){
this.getStorageLocation();
},
/*获取库位信息*/
getStorageLocation(){
listStorageLocation(this.queryParams).then(response => {

View File

@ -3,13 +3,13 @@
<div style="margin-left: 5px; margin-right: 5px;">
<el-row :gutter="10" style="letter-spacing: 5px;">
<el-col :span="8">
<div class="grid-content bg-purpleA">黄色线芯A区({{countA}})</div>
<div class="grid-content bg-purpleA" @click="refresh()">黄色线芯A区({{countA}})</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purpleB">绿色线芯B区({{countB}})</div>
<div class="grid-content bg-purpleB" @click="refresh()">绿色线芯B区({{countB}})</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purpleC">红色线芯C区({{countC}})</div>
<div class="grid-content bg-purpleC" @click="refresh()">红色线芯C区({{countC}})</div>
</el-col>
</el-row>
<el-row :gutter="10">
@ -248,6 +248,7 @@
display: flex; /* 设置为 Flexbox */
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
cursor: pointer; /* 将鼠标形状改为指针形状 */
}
.bg-purpleA {
background: #e6a700;
@ -338,6 +339,11 @@
}
},
methods: {
/*刷新库位信息*/
refresh(){
this.getStorageLocation();
},
/*获取库位信息*/
getStorageLocation(){
listStorageLocation(this.queryParams).then(response => {