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