Browse Source

修改出库记录删除功能

lwx_dev
erdanergou 3 years ago
parent
commit
882fdd6bf5
  1. 8
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java
  2. 16
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  3. 58
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

8
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java

@ -337,6 +337,14 @@ public interface DepositoryRecordMapper {
*/
ApplicationOutRecordP findApplicationOutRecordPById(Integer id);
/**
* 根据id批量查询出库申请
* @param list
* @return
*/
List<ApplicationOutRecordP> findApplicationOutRecordPByIds(List<Integer> list);
/**
* 根据id删除入库记录
* @return 受影响的行数

16
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -748,6 +748,22 @@
group by aorid
</select>
<!--根据主键查询出库记录-->
<select id="findApplicationOutRecordPByIds" parameterType="list" resultMap="applicationOutRecord">
select
<include refid="ApplicationOutRecordInfo"/>
from applicationOutRecordInfo
where 1 = 1
and aorid in
<foreach collection="list" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
group by aorid
</select>
<select id="findApplicationOutByCode" parameterType="string" resultMap="applicationOutRecord">
select
<include refid="ApplicationOutRecordInfo"/>

58
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -272,6 +272,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Transactional(rollbackFor = Exception.class)
@Override
public Integer deleteApplicationOutRecordById(Integer id, UserByPort userByPort) {
// 获取主单
ApplicationOutRecordP recordP = depositoryRecordMapper.findApplicationOutRecordPById(id);
// 删除主单
Integer integer = depositoryRecordMapper.deleteApplicationOutRecordById(id);
// 获取当前主单下的子单
@ -282,7 +285,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Override
public void run() {
// 获取该用户在redis中的订单记录
String key = "user:" + userByPort.getId().toString();
String key = "user:" + recordP.getApplicantId();
// 获取当前用户所有处理单
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord");
for (ApplicationOutRecordMin recordMin :
@ -295,7 +298,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
if (minRecord.length() == 2) {
// []
// 如果当前用户已经没有剩余订单,则删除
redisTemplate.delete("user:" + userByPort.getId());
redisTemplate.delete(key);
} else {
redisTemplate.opsForHash().put(key, "minRecord", minRecord);
}
@ -322,42 +325,41 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
@Transactional(rollbackFor = Exception.class)
@Override
public Integer deleteApplicationOutRecordByIds(List<Integer> list, UserByPort userByPort) {
Integer integer = depositoryRecordMapper.deleteApplicationOutRecordByIds(list);
// 获取出库单列表
List<ApplicationOutRecordP> recordPList = depositoryRecordMapper.findApplicationOutRecordPByIds(list);
Integer integer = depositoryRecordMapper.deleteApplicationOutRecordByIds(list);
List<ApplicationOutRecordMin> applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParents(list);
// 开启一个线程去删除redis中的数据
new Thread(new Runnable() {
@Override
public void run() {
// 获取该用户在redis中的订单记录
String key = "user:" + userByPort.getId().toString();
// 获取当前用户所有订单
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord");
for (ApplicationOutRecordMin recordMin :
applicationOutRecordMinByParent) {
Inventory inventoryById = materialMapper.findInventoryById(recordMin.getMid());
inventoryById.setNumberOfTemporary(inventoryById.getNumberOfTemporary() - recordMin.getQuantity());
materialMapper.updateInventory(inventoryById);
for (ApplicationOutRecordP recordP : recordPList
) {
// 获取该用户在redis中的订单记录
String key = "user:" + recordP.getApplicantId();
List<ApplicationOutRecordMin> recordMinList = depositoryRecordMapper.findApplicationOutRecordMinByParent(recordP.getId());
for (ApplicationOutRecordMin recordMin : recordMinList
) {
// 获取当前用户所有订单
String minRecord = (String) redisTemplate.opsForHash().get(key, "minRecord");
String redisMinRecordKey = "minRecord:" + recordMin.getId();
minRecord = minRecord.replace(redisMinRecordKey + ",", "");
if (minRecord.length() == 2) {
// []
// 如果当前用户已经没有剩余订单,则删除
redisTemplate.delete(key);
} else {
redisTemplate.opsForHash().put(key, "minRecord", minRecord);
}
String redisMinRecordKey = "minRecord:" + recordMin.getId();
minRecord = minRecord.replace(redisMinRecordKey + ",", "");
if (minRecord.length() == 2) {
// []
// 如果当前用户已经没有剩余订单,则删除
redisTemplate.delete("user:" + userByPort.getId());
} else {
redisTemplate.opsForHash().put(key, "minRecord", minRecord);
redisTemplate.delete(redisMinRecordKey);
}
redisTemplate.delete(redisMinRecordKey);
}
for (Integer value : list) {
String redisMainRecordKey = "record:" + value; // 设置redis中主订单键值
String redisMainRecordKey = "record:" + recordP.getId(); // 设置redis中主订单键值
redisTemplate.delete(redisMainRecordKey);
}

Loading…
Cancel
Save