From 5f13213af588444a59d0b3725f3d028cbdaffca4 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 07 五月 2025 15:46:22 +0800
Subject: [PATCH] 完成任务优化 删除组托优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 7 -
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java | 5 +
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java | 3
rsf-admin/src/page/waitPakin/WaitPakinList.jsx | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java | 18 ---
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java | 27 +++---
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 128 +++++++++++++++++++++----------
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 3
10 files changed, 122 insertions(+), 78 deletions(-)
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
index a4eb8c8..82dfe95 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
@@ -164,7 +164,7 @@
bulkActionButtons={
<>
<CreateTaskButton />
- <BulkDeleteButton mutationMode={OPERATE_MODE} />
+ {/* <BulkDeleteButton mutationMode={OPERATE_MODE} /> */}
</>}
rowClick='edit'
omit={['id', 'createTime', 'createBy', 'memo']}
@@ -182,7 +182,7 @@
<WrapperField cellClassName="opt" label="common.field.opt">
<EditButton label="toolbar.detail" sx={{ padding: '1px', fontSize: '.75rem' }} />
<CreateTaskRowButton />
- {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
</WrapperField>
</StyledDatagrid>
</List>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 50a6bfa..c275000 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -452,8 +452,7 @@
.eq(!Cools.isEmpty(code), WarehouseAreasItem::getTrackCode, code)
.eq(!Cools.isEmpty(batch), WarehouseAreasItem::getSplrBatch, batch)
.eq(!Cools.isEmpty(matnrCode), WarehouseAreasItem::getMatnrCode, matnrCode)
- .eq(!Cools.isEmpty(asnCode), WarehouseAreasItem::getAsnCode, asnCode)
- ;
+ .eq(!Cools.isEmpty(asnCode), WarehouseAreasItem::getAsnCode, asnCode);
List<WarehouseAreasItem> list = warehouseAreasItemService.list(queryWrapper);
list.removeIf(e -> e.getAnfme() <= e.getWorkQty());
return R.ok(list);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
index ceea18d..8e088f9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
@@ -109,22 +109,10 @@
@PostMapping("/waitPakin/remove/{ids}")
@Transactional(rollbackFor = Exception.class)
public R remove(@PathVariable Long[] ids) {
- List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
- .in(WaitPakinItem::getPakinId, ids));
- if (!pakinItems.isEmpty()) {
- List<Long> list = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList());
- List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getSource, list));
- if (!taskItems.isEmpty()) {
- return R.error("缁勬嫋妗f湁鏄庣粏浠诲姟");
- }
+ if (Arrays.asList(ids).isEmpty()) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- if (!waitPakinService.removeByIds(Arrays.asList(ids))) {
- return R.error("Delete Fail");
- }
- if (!waitPakinItemService.removeByIds(pakinItems)) {
- throw new CoolException("鏄庣粏鍒犻櫎澶辫触锛侊紒");
- }
- return R.ok("Delete Success").add(ids);
+ return waitPakinService.removePakin(Arrays.asList(ids));
}
@PreAuthorize("hasAuthority('manager:waitPakin:list')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
index 737661d..d9151ed 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakin.java
@@ -4,7 +4,11 @@
import java.text.SimpleDateFormat;
import java.util.Date;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.service.DictDataService;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
@@ -23,6 +27,7 @@
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
+import java.util.Objects;
@Data
@Accessors(chain = true)
@@ -155,19 +160,17 @@
// );
public String getIoStatus$(){
- if (null == this.ioStatus){ return null; }
- switch (this.ioStatus){
- case 0:
- return "寰呭叆搴�";
- case 1:
- return " 鍏ュ簱涓�";
- case 2:
- return "浠诲姟鎵ц涓�";
- case 3:
- return "浠诲姟瀹屾垚";
- default:
- return String.valueOf(this.ioStatus);
+ if (Cools.isEmpty(this.ioStatus)){
+ return "";
}
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>()
+ .eq(DictData::getDictTypeCode, DictTypeCode.SYS_ORDER_IN_STATUS)
+ .eq(DictData::getValue, this.ioStatus));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
}
public String getStatus$(){
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
index 9535a42..eabc9ad 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
@@ -50,6 +50,9 @@
@ApiModelProperty("涓氬姟绫诲瀷")
private Short wkType;
+ @ApiModelProperty("缁勬嫋鏄庣粏ID")
+ private Long source;
+
/**
* 璁㈠崟ID
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
index b355406..4e0f028 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
@@ -11,7 +11,7 @@
//璐ㄦ鐘舵��
PAKIN_IO_STATUS_HOLD("0", "寰呭叆搴�"),
- PAKIN_IO_STATUS_DONE("1", "缁勬嫋瀹屾垚"),
+ PAKIN_IO_STATUS_DONE("1", "鍏ュ簱涓�"),
PAKIN_IO_STATUS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
PAKIN_IO_STATUS_TASK_DONE("3", "浠诲姟瀹屾垚")
;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
index d86c963..2df66e4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaitPakinService.java
@@ -1,8 +1,11 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.WaitPakin;
+
+import java.util.List;
public interface WaitPakinService extends IService<WaitPakin> {
@@ -10,5 +13,5 @@
WaitPakin unBind(WaitPakinParam param);
-
+ R removePakin(List<Long> list);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 1e096e9..9468bd4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -237,7 +237,7 @@
//绉诲嚭鏀惰揣鍖哄簱瀛橈紝 淇敼缁勬墭鐘舵��
removeReceiptStock(pakinItem);
} catch (Exception e) {
- throw new CoolException("搴撳瓨绠$悊淇濆瓨鏇存柊澶辫触锛侊紒");
+ throw new CoolException(e.getMessage());
}
});
/**淇敼搴撲綅鐘舵�佷负F.鍦ㄥ簱*/
@@ -259,10 +259,9 @@
@Transactional(rollbackFor = Exception.class)
public void removeReceiptStock(WaitPakinItem pakinItem) {
WarehouseAreasItem itemServiceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>()
- .eq(WarehouseAreasItem::getTrackCode, pakinItem.getTrackCode())
- .eq(WarehouseAreasItem::getSplrBatch, pakinItem.getBatch()));
+ .eq(WarehouseAreasItem::getId, pakinItem.getSource()));
if (Objects.isNull(itemServiceOne)) {
- throw new CoolException("鏁版嵁閿欒锛岃鏌ョ湅璇疯揣鍖哄簱瀛樻槸鍚﹀瓨鍦紒锛�");
+ throw new CoolException("鏁版嵁閿欒锛氳鏌ョ湅璇疯揣鍖哄簱瀛樻槸鍚﹀瓨鍦紒锛�");
}
Double workQty = itemServiceOne.getWorkQty() - pakinItem.getAnfme();
Double qty = itemServiceOne.getQty() + pakinItem.getAnfme();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 0254d22..28d32d7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.PakinItem;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
@@ -39,6 +40,10 @@
private WarehouseAreasItemService warehouseAreasItemService;
@Autowired
private LocService locService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private TaskItemService taskItemService;
/**
@@ -59,11 +64,11 @@
throw new CoolException("鍙傛暟閿欒锛氭墭鐩樼爜涓虹┖锛侊紒");
}
List<Short> asList = Arrays.asList(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val), Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
- WaitPakin list = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+ WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
.notIn(WaitPakin::getIoStatus, asList)
.eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
- if (!Objects.isNull(list)) {
- throw new CoolException("鎵樼洏鐮侊細" + waitPakin.getBarcode() + "宸茶缁勬墭鍗曪細" + list.getCode() + "浣跨敤锛侊紒");
+ if (!Objects.isNull(pakin)) {
+ throw new CoolException("鎵樼洏鐮侊細" + waitPakin.getBarcode() + "宸茶缁勬墭鍗曪細" + pakin.getCode() + "浣跨敤锛侊紒");
}
List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode()));
if (!locs.isEmpty()) {
@@ -74,43 +79,31 @@
double sum = waitPakin.getItems().stream().mapToDouble(PakinItem::getReceiptQty).sum();
WaitPakin waitPakin1 = new WaitPakin();
- WaitPakin pakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
- .in(WaitPakin::getIoStatus, asList)
- .eq(WaitPakin::getBarcode, waitPakin.getBarcode()));
- if (Objects.isNull(pakin)) {
- String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null);
- if (StringUtils.isBlank(ruleCode)) {
- throw new CoolException("缂栫爜瑙勫垯閿欒锛� 缂栫爜瑙勫垯銆孲YS_WAIT_PAKIN_CODE銆嶈鍒欐槸涓嶅瓨鍦�");
- }
- waitPakin1.setCode(ruleCode)
- //鐘舵�佷慨鏀逛负鍏ュ簱涓�
- .setIoStatus(Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))
- .setAnfme(sum)
- .setUpdateBy(userId)
- .setCreateBy(userId)
- .setBarcode(waitPakin.getBarcode());
- if (!this.save(waitPakin1)) {
- throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
- }
- } else {
- BeanUtils.copyProperties(pakin, waitPakin1);
- waitPakin1.setAnfme(sum);
- if (!this.saveOrUpdate(waitPakin1)) {
- throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
- }
+ String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_WAIT_PAKIN_CODE, null);
+ if (StringUtils.isBlank(ruleCode)) {
+ throw new CoolException("缂栫爜瑙勫垯閿欒锛� 缂栫爜瑙勫垯銆孲YS_WAIT_PAKIN_CODE銆嶈鍒欐槸涓嶅瓨鍦�");
}
- /**鐗╂枡璺熻釜鐮�*/
-
- List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
- .eq(WaitPakinItem::getPakinId, waitPakin1.getId()))
- ;
- if (!pakinItems.isEmpty()) {
- if (!waitPakinItemService.remove(new LambdaQueryWrapper<WaitPakinItem>()
- .eq(WaitPakinItem::getPakinId, waitPakin1.getId())
- )) {
- throw new CoolException("鍘熷崟鎹竻闄ゅけ璐ワ紒锛�");
- }
+ waitPakin1.setCode(ruleCode)
+ //鐘舵�佷慨鏀逛负鍏ュ簱涓�
+ .setIoStatus(Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))
+ .setAnfme(sum)
+ .setUpdateBy(userId)
+ .setCreateBy(userId)
+ .setBarcode(waitPakin.getBarcode());
+ if (!this.save(waitPakin1)) {
+ throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
}
+// /**鐗╂枡璺熻釜鐮�*/
+// List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
+// .eq(WaitPakinItem::getPakinId, waitPakin1.getId()))
+// ;
+// if (!pakinItems.isEmpty()) {
+// if (!waitPakinItemService.remove(new LambdaQueryWrapper<WaitPakinItem>()
+// .eq(WaitPakinItem::getPakinId, waitPakin1.getId())
+// )) {
+// throw new CoolException("鍘熷崟鎹竻闄ゅけ璐ワ紒锛�");
+// }
+// }
List<WaitPakinItem> items = new ArrayList<>();
for (PakinItem pakinItem1 : waitPakin.getItems()) {
//涓嶈壇鏍囩缁勬墭
@@ -157,6 +150,7 @@
WaitPakinItem pakinItem = new WaitPakinItem();
pakinItem.setAnfme(warehouseAreasItems.getAnfme())
.setPakinId(waitPakin1.getId())
+ .setSource(warehouseAreasItems.getId())
.setAsnId(warehouseAreasItems.getAsnId())
.setAsnCode(warehouseAreasItems.getAsnCode())
.setAsnItemId(warehouseAreasItems.getId())
@@ -199,7 +193,8 @@
if (Objects.isNull(one)) {
throw new CoolException("鏀惰揣鍖烘暟鎹敊璇紒锛�");
}
- one.setWorkQty(one.getWorkQty() + pakinItem.getAnfme() + one.getQty()) ;
+ one.setAnfme(one.getAnfme() - pakinItem.getAnfme())
+ .setWorkQty(one.getWorkQty() + pakinItem.getAnfme() + one.getQty()) ;
if (one.getWorkQty() > one.getAnfme()) {
throw new CoolException("缁勬墭鏁伴噺涓嶈兘澶т簬鏀惰揣鏁伴噺锛侊紒");
}
@@ -207,8 +202,6 @@
throw new CoolException("鏀惰揣鍖烘墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�");
}
}
-
-
waitPakin1.setAnfme(sum1);
if (!this.updateById(waitPakin1)) {
@@ -255,4 +248,57 @@
}
return new WaitPakin();
}
+
+ /**
+ * @author Ryan
+ * @date 2025/5/7
+ * @description: 鍒犻櫎缁勬嫋淇℃伅
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R removePakin(List<Long> pakinIds) {
+ List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>()
+ .in(WaitPakinItem::getPakinId, pakinIds));
+ if (!pakinItems.isEmpty()) {
+ List<Long> list = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList());
+ List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getSource, list));
+ if (!taskItems.isEmpty()) {
+ return R.error("缁勬嫋妗f湁鏄庣粏浠诲姟");
+ }
+ }
+
+ Set<Long> sourceIds = pakinItems.stream().map(WaitPakinItem::getSource).collect(Collectors.toSet());
+
+ List<WarehouseAreasItem> areasItems = warehouseAreasItemService.listByIds(sourceIds);
+
+ if (areasItems.isEmpty()) {
+ return R.error("鏀惰揣鍖烘暟鎹笉瀛樺湪锛侊紒");
+ }
+
+ Map<Long, List<WaitPakinItem>> listMap = pakinItems.stream().collect(Collectors.groupingBy(WaitPakinItem::getSource));
+ for (WarehouseAreasItem item : areasItems) {
+ List<WaitPakinItem> pakin = listMap.get(item.getId());
+ if (Objects.isNull(pakin)) {continue;}
+ double sum = pakin.stream().mapToDouble(WaitPakinItem::getAnfme).sum();
+ item.setWorkQty(item.getWorkQty() - sum)
+ .setAnfme(item.getAnfme() + sum);
+ if (!warehouseAreasItemService.updateById(item)) {
+ throw new CoolException("鏀惰揣鍖烘暟鎹洖婊氬け璐ワ紒锛�");
+ }
+ }
+
+ if (!waitPakinService.removeByIds(pakinIds)) {
+ return R.error("Delete Fail");
+ }
+
+ Set<Long> pakinItemIds = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toSet());
+
+ if (!waitPakinItemService.removeByIds(pakinItemIds)) {
+ throw new CoolException("鏄庣粏鍒犻櫎澶辫触锛侊紒");
+ }
+ return R.ok("Delete Success").add(pakinIds);
+
+
+ }
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
index 8ba60d6..dedbb6d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -59,4 +59,7 @@
*/
public final static String SYS_WARE_AREAS_TYPE = "sys_ware_areas_type";
+ /**缁勬墭鎵ц鐘舵��*/
+ public final static String SYS_ORDER_IN_STATUS = "sys_order_in_status";
+
}
--
Gitblit v1.9.1