From 6c5edf41ef56af07e6e3baa25f77759ecaf8f68c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 09 四月 2025 15:41:50 +0800
Subject: [PATCH] 任务列表界面优化
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 134 ++++++++++++++++++++++++++------------------
1 files changed, 79 insertions(+), 55 deletions(-)
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 770b726..ae44e15 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
@@ -1,6 +1,8 @@
package com.vincent.rsf.server.api.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
@@ -13,10 +15,13 @@
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
+import com.vincent.rsf.server.common.utils.JSONUtil;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -29,6 +34,7 @@
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.FieldsItemService;
import com.vincent.rsf.server.system.service.UserLoginService;
+import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -181,25 +187,25 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R receiptToWarehouse(ReceiptParams params) {
- if (params.getReceipts().isEmpty()) {
+ public R receiptToWarehouse(Map<String, Object> params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ ReceiptParams receiptParam = JSONObject.parseObject(JSONObject.toJSONString(params), ReceiptParams.class);
+ if (receiptParam.getReceipts().isEmpty()) {
throw new CoolException("鏀惰揣鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getWhAreaId())) {
+ if (Objects.isNull(receiptParam.getWhAreaId())) {
throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
}
WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
- .eq(WarehouseAreas::getId, params.getWhAreaId()));
+ .eq(WarehouseAreas::getId, receiptParam.getWhAreaId()));
if (Objects.isNull(areasItem)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
}
- //鑾峰彇宸插惎鐢ㄧ殑鍔ㄦ�佹墿灞曞瓧
- List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getFlagEnable, 1)
- .eq(Fields::getStatus, 1));
- List<ReceiptDetlsDto> receipts = params.getReceipts();
+ List<ReceiptDetlsDto> receipts = receiptParam.getReceipts();
List<WarehouseAreasItem> allOrders = new ArrayList<>();
Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
@@ -211,15 +217,17 @@
if (Objects.isNull(asnOrder)) {
throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
}
- /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+ //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
Double rcptedQty = asnOrder.getQty() + receiptQty;
- asnOrder.setQty(rcptedQty);
+ asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
}
-
- receipts.forEach(dto -> {
+ List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
+ for (Map<String, Object> rcpt : receipts1) {
+ if (Objects.isNull(rcpt)) {continue;}
+ ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class);
Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
if (Objects.isNull(matnr)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
@@ -227,22 +235,38 @@
if (Objects.isNull(dto.getReceiptQty())) {
throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
}
- if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
- }
-
+// if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
+// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+// }
AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnCode, asnCode)
.eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
if (Objects.isNull(orderItem)) {
throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
}
-// if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
-// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
-// }
+ if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
+ throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
+ }
Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
orderItem.setQty(itemRcptQty)
+ .setSplrBatch(dto.getSplrBatch())
+ .setStockUnit(dto.getStockUnit())
.setProdTime(dto.getProdTime());
+
+ if (!Objects.isNull(rcpt)) {
+ try {
+ if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) {
+ //鑾峰彇16浣島uid
+ String uuid16 = CommonUtil.randomUUID16();
+ rcpt.put("index", uuid16);
+ orderItem.setFieldsIndex(uuid16);
+ }
+ //淇濆瓨鎴栨洿鏂版墿灞曞瓧娈�
+ FieldsUtils.updateFieldsValue(rcpt);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
if (asnOrderItemMapper.updateById(orderItem) < 1) {
throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -254,54 +278,31 @@
// if (Objects.isNull(dto.getProdTime())) {
// format = dateFormat.format(dto.getProdTime());
// }
- item.setBarcode(dto.getBarcode())
+ item.setTrackCode(dto.getBarcode())
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
+ .setAsnItemId(orderItem.getId())
+ .setAsnCode(asnOrder.getCode())
+ .setAsnId(asnOrder.getId())
.setProdTime(dto.getProdTime())
.setWeight(dto.getWeigth())
.setStockUnit(dto.getStockUnit())
.setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
.setAnfme(itemRcptQty)
- .setSplrBtch(dto.getSplrBatch())
+ .setSplrBatch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
.setMatnrId(matnr.getId())
- .setMatnrName(matnr.getName())
+ .setMaktx(matnr.getName())
//搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
.setUnit(dto.getStockUnit())
.setStockUnit(dto.getStockUnit())
.setWeight(matnr.getWeight())
+ .setFieldsIndex(orderItem.getFieldsIndex())
.setShipperId(matnr.getShipperId());
- //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+ //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
- if (!Objects.isNull(fields)) {
- if (!Objects.isNull(dto.getExtendFields())) {
- //鑾峰彇16浣島uid
- String uuid16 = CommonUtil.randomUUID16();
- Map<String, Object> extendFields = dto.getExtendFields();
- //瀛楁闆嗗悎鐢虫槑
- List<FieldsItem> fieldsItems = new ArrayList<>();
- extendFields.keySet().forEach(key -> {
- fields.forEach(obj -> {
- //鍒ゆ柇key鍊间笌fields琛ㄥ瓧娈垫槸鍚︾浉鍚�
- if (obj.getFields().equals(key)) {
- FieldsItem fieldsItem = new FieldsItem();
- fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId())
- .setShiperId(matnr.getShipperId())
- .setValue(extendFields.get(key).toString())
- .setUuid(uuid16);
- fieldsItems.add(fieldsItem);
- //鍞竴鏍囪瘑鍏ュ簱
- item.setFieldsIndex(uuid16);
- }
- });
- });
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
- }
- }
- }
allOrders.add(item);
- });
+ }
if (!warehouseAreasItemService.saveBatch(allOrders)) {
throw new CoolException("鏀惰揣澶辫触锛侊紒");
@@ -316,7 +317,7 @@
// //鏃ュ織琛ㄦ搷浣�
// operateOrderLogs(asnOrder);
// }
- return R.ok("鎿嶄綔鎴愬姛");
+ return R.ok(asnOrder);
}
/**
@@ -377,9 +378,21 @@
return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
}
+ /**
+ * @author Ryan
+ * @description 鑾峰彇缁勭洏鏄庣粏
+ * @param
+ * @return
+ * @time 2025/4/7 16:58
+ */
@Override
public R getDeltByCode(String code) {
- return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
+ //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
+ LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+ .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx").lambda()
+ .eq(WarehouseAreasItem::getTrackCode, code)
+ .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId);
+ return R.ok(warehouseAreasItemService.getOne(queryWrapper));
}
/**
@@ -394,6 +407,12 @@
return waitPakinService.mergeItems(waitPakin);
}
+ /**
+ * @author Ryan
+ * @description 瑙g粦
+ * @param param
+ * @return
+ */
@Override
public WaitPakin unBind(WaitPakinParam param) {
return waitPakinService.unBind(param);
@@ -704,6 +723,11 @@
return R.ok();
}
+ @Override
+ public R completeOrder(Long id, Long loginUserId) {
+ return asnOrderMapper.completeOrder(id, loginUserId);
+ }
+
/**
* 鑾峰彇ReceiptDetlsDtos
*/
@@ -714,6 +738,7 @@
detlsDto.setAsnCode(asnOrderItem.getAsnCode())
.setMaktx(asnOrderItem.getMaktx())
+ .setFieldsIndex(asnOrderItem.getFieldsIndex())
.setBarcode(asnOrderItem.getTrackCode())
.setQty(asnOrderItem.getQty())
.setPoCode(asnOrderItem.getPoCode())
@@ -754,7 +779,6 @@
detlsDto.setPlatformId(purchaseItem.getPlatItemId());
}
}
-
detlsDtos.add(detlsDto);
});
--
Gitblit v1.9.1