From 5534c554528a360110f6f1acc04190a2fee6de98 Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期一, 07 四月 2025 15:42:45 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 15 ++
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java | 5
rsf-admin/src/page/taskLog/TaskLogList.jsx | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java | 27 ++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/OrderType.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 149 +++++++++---------------
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 8 +
rsf-admin/src/page/taskItemLog/TaskItemLogList.jsx | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 78 +++++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/TaskQueueDto.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java | 12 ++
rsf-admin/.env | 2
rsf-server/src/main/resources/application-dev.yml | 7
21 files changed, 226 insertions(+), 109 deletions(-)
diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/page/taskItemLog/TaskItemLogList.jsx b/rsf-admin/src/page/taskItemLog/TaskItemLogList.jsx
index 3e3c9f2..58c7f4f 100644
--- a/rsf-admin/src/page/taskItemLog/TaskItemLogList.jsx
+++ b/rsf-admin/src/page/taskItemLog/TaskItemLogList.jsx
@@ -111,6 +111,7 @@
}}
title={"menu.taskItemLog"}
filters={filters}
+ empty={false}
sort={{ field: "create_time", order: "desc" }}
actions={(
<TopToolbar>
diff --git a/rsf-admin/src/page/taskLog/TaskLogList.jsx b/rsf-admin/src/page/taskLog/TaskLogList.jsx
index ff2084f..5ffad18 100644
--- a/rsf-admin/src/page/taskLog/TaskLogList.jsx
+++ b/rsf-admin/src/page/taskLog/TaskLogList.jsx
@@ -110,7 +110,7 @@
marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.taskLog"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ empty={false}
filters={filters}
sort={{ field: "create_time", order: "desc" }}
actions={(
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index b9cd28e..330b9e5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -234,7 +234,7 @@
@ApiOperation("浠诲姟涓婃灦")
@PreAuthorize("hasAuthority('manager:qlyInspect:update')")
- @PostMapping("/task/stock")
+ @PostMapping("/task/public/{code}")
public R taskToLocs(@PathVariable String code) throws Exception {
if (Objects.isNull(code)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/TaskQueueDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/TaskQueueDto.java
index 36c9383..dbe935a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/TaskQueueDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/TaskQueueDto.java
@@ -1,6 +1,5 @@
package com.vincent.rsf.server.api.entity.dto;
-import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.entity.Task;
import com.vincent.rsf.server.manager.entity.TaskItem;
import io.swagger.annotations.ApiModel;
@@ -14,7 +13,7 @@
@Data
@Accessors(chain = true)
@ApiModel(value = "TaskQueueDto", description = "浠诲姟淇℃伅")
-public class TaskQueueDto implements Serializable {
+public class TaskQueueDto implements Serializable{
@ApiModelProperty("浠诲姟涓诲崟")
private Task task;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/OrderType.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/OrderType.java
index 5ca9670..023b103 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/OrderType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/enums/OrderType.java
@@ -12,7 +12,8 @@
ORDER_PURCHASE_IN("purchase", "閲囪喘鍏ュ簱鍗�"),
ORDER_OUT("out", "鍑哄簱鍗�"),
ORDER_IN("in", "鍏ュ簱鍗�"),
- ORDER_RECEIPT("receipt", "鏀惰揣鍗�")
+ ORDER_RECEIPT("receipt", "鏀惰揣鍗�"),
+ ORDER_PLAT_IN("plat in", "骞冲簱鍏ュ簱鍗�"),
;
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 150d18a..df57841 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
@@ -6,6 +6,7 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.*;
import com.vincent.rsf.server.api.entity.dto.*;
+import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.common.config.ConfigProperties;
@@ -201,7 +202,7 @@
List<ReceiptDetlsDto> receipts = params.getReceipts();
List<WarehouseAreasItem> allOrders = new ArrayList<>();
- double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+ Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
String asnCode = receipts.stream().findFirst().get().getAsnCode();
@@ -210,7 +211,9 @@
if (Objects.isNull(asnOrder)) {
throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
}
- asnOrder.setQty(receiptQty);
+ /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+ Double rcptedQty = asnOrder.getQty() + receiptQty;
+ asnOrder.setQty(rcptedQty);
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -234,40 +237,14 @@
if (Objects.isNull(orderItem)) {
throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
}
- if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
- }
- orderItem.setQty(dto.getReceiptQty())
- .setProdTime(dto.getProdTime());
-
- if (asnOrderItemMapper.updateById(orderItem) < 1) {
- throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
- }
-
- WarehouseAreasItem item = new WarehouseAreasItem();
-// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-// String format = null;
-// if (Objects.isNull(dto.getProdTime())) {
-// format = dateFormat.format(dto.getProdTime());
+// if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
+// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
// }
- item.setBarcode(dto.getBarcode())
- .setAreaName(areasItem.getName())
- .setAreaId(areasItem.getId())
- .setProdTime(dto.getProdTime())
- .setWeight(dto.getWeigth())
+ Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
+ orderItem.setQty(itemRcptQty)
+ .setSplrBatch(dto.getSplrBatch())
.setStockUnit(dto.getStockUnit())
- .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
- .setAnfme(dto.getReceiptQty())
- .setSplrBtch(dto.getSplrBatch())
- .setMatnrCode(matnr.getCode())
- .setMatnrId(matnr.getId())
- .setMatnrName(matnr.getName())
- //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
- .setUnit(dto.getStockUnit())
- .setStockUnit(dto.getStockUnit())
- .setWeight(matnr.getWeight())
- .setShipperId(matnr.getShipperId());
- //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+ .setProdTime(dto.getProdTime());
if (!Objects.isNull(fields)) {
if (!Objects.isNull(dto.getExtendFields())) {
@@ -286,76 +263,65 @@
.setValue(extendFields.get(key).toString())
.setUuid(uuid16);
fieldsItems.add(fieldsItem);
- //鍞竴鏍囪瘑鍏ュ簱
- item.setFieldsIndex(uuid16);
}
});
});
if (!fieldsItemService.saveBatch(fieldsItems)) {
throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
}
+ orderItem.setFieldsIndex(uuid16);
}
}
+
+ if (asnOrderItemMapper.updateById(orderItem) < 1) {
+ throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+
+ WarehouseAreasItem item = new WarehouseAreasItem();
+// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+// String format = null;
+// if (Objects.isNull(dto.getProdTime())) {
+// format = dateFormat.format(dto.getProdTime());
+// }
+ item.setBarcode(dto.getBarcode())
+ .setAreaName(areasItem.getName())
+ .setAreaId(areasItem.getId())
+ .setProdTime(dto.getProdTime())
+ .setWeight(dto.getWeigth())
+ .setStockUnit(dto.getStockUnit())
+ .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
+ .setAnfme(itemRcptQty)
+ .setSplrBtch(dto.getSplrBatch())
+ .setMatnrCode(matnr.getCode())
+ .setMatnrId(matnr.getId())
+ .setMatnrName(matnr.getName())
+ //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
+ .setUnit(dto.getStockUnit())
+ .setStockUnit(dto.getStockUnit())
+ .setWeight(matnr.getWeight())
+ .setFieldsIndex(orderItem.getFieldsIndex())
+ .setShipperId(matnr.getShipperId());
+ //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+
+
allOrders.add(item);
});
if (!warehouseAreasItemService.saveBatch(allOrders)) {
throw new CoolException("鏀惰揣澶辫触锛侊紒");
}
-
- //鑾峰彇閲囪喘鏁伴噺
- double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
-
- BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
- //鍒ゆ柇宸叉敹璐ф暟閲忔槸鍚﹀皬浜庣瓑浜庨噰璐暟閲�
- if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
- asnOrder.setRleStatus(Short.valueOf("1"));
- //鏃ュ織琛ㄦ搷浣�
- operateOrderLogs(asnOrder);
- }
-
+// //鑾峰彇閲囪喘鏁伴噺
+// double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
+//
+// BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
+// //鍒ゆ柇宸叉敹璐ф暟閲忔槸鍚﹀皬浜庣瓑浜庨噰璐暟閲�
+// if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
+// asnOrder.setRleStatus(Short.valueOf("1"));
+// //鏃ュ織琛ㄦ搷浣�
+// operateOrderLogs(asnOrder);
+// }
return R.ok("鎿嶄綔鎴愬姛");
}
-
- /**
- * @author Ryan
- * @description 鍒犻櫎鍘熶富鍗曞強鏄庣粏锛屽姞鍏ュ巻鍙叉。
- * @param
- * @return
- * @time 2025/3/19 19:53
- */
- private void operateOrderLogs(AsnOrder asnOrder) {
- if (!asnOrderMapper.removeById(asnOrder.getId())) {
- throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
- }
-
- AsnOrderLog orderLog = new AsnOrderLog();
- BeanUtils.copyProperties(asnOrder, orderLog);
- orderLog.setAsnId(asnOrder.getId());
-
- if (!asnOrderLogService.save(orderLog)) {
- throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
- }
-
- List<AsnOrderItemLog> logs = new ArrayList<>();
- List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId()));
- items.forEach(item -> {
- AsnOrderItemLog itemLog = new AsnOrderItemLog();
- BeanUtils.copyProperties(item, itemLog);
- itemLog.setAsnItemId(itemLog.getId())
- .setAsnId(item.getAsnId());
- logs.add(itemLog);
- });
-
- if (!asnOrderItemLogService.saveBatch(logs)) {
- throw new CoolException("閫氱煡鍗曟槑缁嗗巻鍙叉。淇濆瓨澶辫触锛侊紒");
- }
-
- if (asnOrderItemMapper.delete(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())) < 1) {
- throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
- }
- }
-
/**
* @author Ryan
@@ -624,7 +590,10 @@
throw new CoolException("鍗曟嵁鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
Long OrderId = params.getItemList().stream().findFirst().get().getAsnId();
- AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, OrderId));
+ /**鑾峰彇骞冲簱璁㈠崟*/
+ AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
+ .eq(AsnOrder::getId, OrderId)
+ .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
if (Objects.isNull(order)) {
throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
}
@@ -681,7 +650,7 @@
throw new CoolException("鎷栫洏浠诲姟涓嶅瓨鍦紒锛�");
}
List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
- if (!taskItems.isEmpty()) {
+ if (taskItems.isEmpty()) {
throw new CoolException("鎷栫洏浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
}
TaskQueueDto queueDto = new TaskQueueDto();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index 108115b..0ddc29c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -190,4 +190,19 @@
}
return R.ok(asnOrderService.batchUpdate(params, getLoginUserId()));
}
+
+ @ApiOperation("涓�閿敹璐�")
+ @PostMapping("/asnOrder/complete/{id}")
+ @PreAuthorize("hasAuthority('manager:asnOrder:update')")
+ public R completeOrder(@PathVariable Long id) {
+ if (Objects.isNull(id)) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ return asnOrderService.completeOrder(id, getLoginUserId());
+ }
+
+
+
+
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java
index 9adbe56..9ea862d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java
@@ -210,6 +210,18 @@
// null // 澶囨敞
// );
+ public String getExceStatus$() {
+ if (Cools.isEmpty(this.exceStatus)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_ASN_EXCE_STATUS).eq(DictData::getValue, this.exceStatus));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
public String getType$(){
if (Cools.isEmpty(this.type)){
return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
index 59d39db..346f37e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
@@ -112,6 +112,9 @@
@ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
private Integer status;
+ @ApiModelProperty("鎵ц鐘舵��")
+ private Short exceStatus;
+
/**
* 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
index 7d2e4a6..278ef22 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -34,10 +34,8 @@
@Data
@Accessors(chain = true)
@TableName("man_task")
+@ApiModel(value = "Task", description = "浠诲姟妗�")
public class Task implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
/**
* ID
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
index 3b7d24a..acbbbd4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -31,10 +31,8 @@
@Data
@Accessors(chain = true)
@TableName("man_task_item")
+@ApiModel(value = "TaskItem", description = "浠诲姟妗f槑缁�")
public class TaskItem implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
/**
* 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
new file mode 100644
index 0000000..6cf50cb
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
@@ -0,0 +1,27 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title PakinIOStatus
+ * @description
+ * @create 2025/4/7 08:48
+ */
+public enum PakinIOStatus {
+
+ //璐ㄦ鐘舵��
+ PAKIN_IO_STATUS_HOLD("0", "寰呭叆搴�"),
+ QLY_ISPT_STAS_DONE("1", "缁勬嫋瀹屾垚"),
+ QLY_ISPT_STAS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
+ QLY_ISPT_STAS_TASK_DONE("3", "浠诲姟瀹屾垚")
+ ;
+
+ PakinIOStatus(String val, String desc) {
+ this.val = val;
+ this.desc = desc;
+ }
+
+ public String val;
+ public String desc;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index c270e68..86d45c9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -68,7 +68,7 @@
*/
@Scheduled(cron = "0 0/05 * * * ? ")
@Transactional(rollbackFor = Exception.class)
- public void genAsnOrder() {
+ public synchronized void genAsnOrder() {
//鍒ゆ柇鏄惁寮�鍚嚜鍔ㄧ敓鎴怉SN鍗曟嵁
if (!flowProperties.getFlagAutoAsn()) {
return;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
index 81ac399..64d420a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
@@ -21,4 +21,5 @@
boolean batchUpdate(BatchUpdateParam params, Long loginUserId);
+ R completeOrder(Long id, Long loginUserId);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index b385eed..99b749e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -11,15 +11,20 @@
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
+import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.mapper.PurchaseMapper;
+import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
+import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.AsnOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.mapper.SerialRuleMapper;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -46,6 +51,10 @@
private PurchaseMapper purchaseMapper;
@Autowired
private AsnOrderItemService asnOrderItemService;
+ @Autowired
+ private AsnOrderLogService asnOrderLogService;
+ @Autowired
+ private AsnOrderItemLogService asnOrderItemLogService;
@Resource
private SerialRuleMapper serialRuleMapper;
@@ -171,6 +180,75 @@
.set(!Objects.isNull(order.getWkType()), AsnOrder::getWkType, order.getWkType())
.set(!Objects.isNull(order.getExceStatus()), AsnOrder::getExceStatus, order.getExceStatus())
.set(AsnOrder::getUpdateBy, userId));
+ }
+ /**
+ * @param id
+ * @param loginUserId
+ * @return
+ * @author Ryan
+ * @description 涓�閿敹璐�
+ * @time 2025/4/3 15:45
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public R completeOrder(Long id, Long loginUserId) {
+ AsnOrder asnOrder = this.getById(id);
+ if (Objects.isNull(asnOrder)) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦�!!");
+ }
+ //涓�閿姞鍏ュ巻鍙叉。
+ try {
+ operateOrderLogs(asnOrder);
+ } catch (Exception e) {
+ throw new CoolException("鏀惰揣瀹屾垚澶辫触锛侊紒");
+ }
+ return R.ok("鏀惰揣鎴愬姛锛侊紒");
+ }
+
+ /**
+ * @author Ryan
+ * @description 鍒犻櫎鍘熶富鍗曞強鏄庣粏锛屽姞鍏ュ巻鍙叉。
+ * @param
+ * @return
+ * @time 2025/3/19 19:53
+ */
+ @Transactional(rollbackFor = Exception.class)
+ private void operateOrderLogs(AsnOrder asrder) throws Exception{
+ if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ AsnOrder order = this.getById(asrder.getId());
+ AsnOrderLog orderLog = new AsnOrderLog();
+ order.setExceStatus(Short.valueOf("2"));
+ BeanUtils.copyProperties(order, orderLog);
+ orderLog.setId(null);
+ orderLog.setAsnId(order.getId());
+
+ if (!this.saveOrUpdate(order)) {
+ throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
+ if (!asnOrderLogService.save(orderLog)) {
+ throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
+ }
+ List<AsnOrderItemLog> logs = new ArrayList<>();
+ List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
+ items.forEach(item -> {
+ AsnOrderItemLog itemLog = new AsnOrderItemLog();
+ BeanUtils.copyProperties(item, itemLog);
+ itemLog.setAsnItemId(itemLog.getId())
+ .setAsnId(item.getAsnId());
+ logs.add(itemLog);
+ });
+
+ if (!asnOrderItemLogService.saveBatch(logs)) {
+ throw new CoolException("閫氱煡鍗曟槑缁嗗巻鍙叉。淇濆瓨澶辫触锛侊紒");
+ }
+ if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()))) {
+ throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
+ }
+ if (!this.removeById(asrder.getId())) {
+ throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+ }
}
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
index c64cd4a..e826e7f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.manager.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.IsptOrderParam;
@@ -171,6 +172,9 @@
throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
}
}
+ if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()).set(AsnOrder::getNtyStatus, 1))) {
+ throw new CoolException("鎶ユ鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
return R.ok("淇濆瓨鎴愬姛锛侊紒");
}
}
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 e902543..49e979b 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
@@ -8,6 +8,7 @@
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.entity.enums.TaskType;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
import com.vincent.rsf.server.manager.mapper.TaskMapper;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -67,7 +68,9 @@
}
/**鑾峰彇缁勬嫋*/
List<Long> ids = waitPakin.stream().map(WaitPakin::getId).collect(Collectors.toList());
- List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().in(WaitPakin::getId, ids));
+ List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
+ .in(WaitPakin::getId, ids)
+ .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val)));
if (waitPakins.isEmpty()) {
throw new CoolException("缁勬嫋淇℃伅涓嶅瓨鍦紒锛�");
}
@@ -118,6 +121,9 @@
}
});
+ waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
+ .in(WaitPakin::getId, ids)
+ .set(WaitPakin::getIoStatus, PakinIOStatus.QLY_ISPT_STAS_TASK_EXCE.val));
return R.ok("浠诲姟鐢熸垚瀹屾瘯锛�");
}
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 e2c40cb..70ce7d0 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
@@ -6,6 +6,7 @@
import com.vincent.rsf.server.manager.controller.params.PakinItem;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
import com.vincent.rsf.server.manager.mapper.WaitPakinMapper;
import com.vincent.rsf.server.manager.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -79,7 +80,7 @@
}
pakin.setCode(ruleCode)
//鐘舵�佷慨鏀逛负鍏ュ簱涓�
- .setIoStatus(Short.parseShort("1"))
+ .setIoStatus(Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val))
.setAnfme(sum)
.setBarcode(waitPakin.getBarcode());
if (!this.save(pakin)) {
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 34fb329..3239e46 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
@@ -49,4 +49,9 @@
*/
public final static String DICT_INSPECT_RESULT = "sys_inspect_result";
+ /**
+ * ASN璁㈠崟鎵ц鐘舵��
+ */
+ public final static String DICT_ASN_EXCE_STATUS = "sys_asn_exce_status";
+
}
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 888318c..1afc3c5 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -12,11 +12,10 @@
matching-strategy: ANT_PATH_MATCHER
datasource:
driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
- username: root
+ url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+# username: root
# url: jdbc:mysql://localhost:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-# username: rsf
-
+ username: rsf
password: 34821015
type: com.alibaba.druid.pool.DruidDataSource
druid:
--
Gitblit v1.9.1