From 86fd4ec5fd97081f212e4c35523ee3d44f233fb6 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期五, 17 四月 2026 17:07:04 +0800
Subject: [PATCH] 配置多数据源
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java | 138 +++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 131 insertions(+), 7 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
index 946f9df..436fed0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
@@ -28,12 +28,17 @@
import com.vincent.rsf.server.system.service.impl.FieldsItemServiceImpl;
import com.vincent.rsf.server.system.service.impl.UserServiceImpl;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import com.vincent.rsf.server.system.utils.SystemAuthUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
+import java.util.stream.Collectors;
@Service
public class PdaCheckOrderServiceImpl implements PdaCheckOrderService {
@@ -61,6 +66,15 @@
private ReportMsgService reportMsgService;
@Autowired
private UserService userService;
+
+ @Autowired
+ private CheckOrderItemService checkOrderItemService;
+
+ @Autowired
+ private CheckOrderService checkOrderService;
+
+ @Autowired
+ private CusItemSyncViewQueryService cusItemSyncViewQueryService;
@Override
@@ -141,7 +155,7 @@
taskItem.setTaskId(task.getId())
.setOrderType(OrderType.ORDER_CHECK.type)
.setSourceCode(diffItem.getOrderCode())
- .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
+ .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)
.setAnfme(diffItem.getCheckQty())
.setWorkQty(0.0)
.setBatch(diffItem.getBatch())
@@ -201,6 +215,43 @@
throw new CoolException("鏇存柊宸紓鍗曞け璐�");
}
+ // 鎸夌洏鐐瑰崟鏄庣粏姹囨�诲疄鐩樻暟閲忓苟鍥炲啓
+ Set<Long> taskItemIds = diffItems.stream().map(CheckDiffItem::getTaskItemId).filter(Objects::nonNull).collect(Collectors.toSet());
+ if (!taskItemIds.isEmpty()) {
+ List<TaskItem> taskItems = taskItemService.listByIds(taskItemIds);
+ Map<Long, BigDecimal> orderItemIdToCheckQty = new HashMap<>();
+ for (CheckDiffItem di : diffItems) {
+ if (di.getTaskItemId() == null) {
+ continue;
+ }
+ TaskItem ti = taskItems.stream().filter(t -> t.getId().equals(di.getTaskItemId())).findFirst().orElse(null);
+ if (ti == null || ti.getOrderItemId() == null) {
+ continue;
+ }
+ Double cq = di.getCheckQty() != null ? di.getCheckQty() : 0.0;
+ orderItemIdToCheckQty.merge(ti.getOrderItemId(), BigDecimal.valueOf(cq), BigDecimal::add);
+ }
+ for (Map.Entry<Long, BigDecimal> e : orderItemIdToCheckQty.entrySet()) {
+ double workQty = e.getValue().setScale(6, RoundingMode.HALF_UP).doubleValue();
+ if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>()
+ .eq(WkOrderItem::getId, e.getKey())
+ .set(WkOrderItem::getWorkQty, workQty))) {
+ throw new CoolException("鐩樼偣鍗曟槑缁嗗疄鐩樻暟閲忔洿鏂板け璐�");
+ }
+ }
+ if (checkDiff.getOrderId() != null) {
+ List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, checkDiff.getOrderId()));
+ BigDecimal orderWorkQty = orderItems.stream()
+ .map(oi -> oi.getWorkQty() != null ? BigDecimal.valueOf(oi.getWorkQty()) : BigDecimal.ZERO)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ if (!checkOrderService.update(new LambdaUpdateWrapper<WkOrder>()
+ .eq(WkOrder::getId, checkDiff.getOrderId())
+ .set(WkOrder::getWorkQty, orderWorkQty.setScale(6, RoundingMode.HALF_UP).doubleValue()))) {
+ throw new CoolException("鐩樼偣鍗曚富琛ㄥ疄鐩樻暟閲忔洿鏂板け璐�");
+ }
+ }
+ }
+
task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
task.setUpdateBy(loginUserId);
task.setUpdateTime(new Date());
@@ -216,7 +267,7 @@
if (Cools.isEmpty(matnrCode)) {
return R.error("鐗╂枡鐮佷负绌�");
}
- Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, matnrCode));
+ Matnr matnr = getMatnrByCodePreferView(matnrCode);
if (null == matnr) {
return R.error("鏈壘鍒扮紪鐮佸搴旂殑鏄庣粏");
}
@@ -226,6 +277,73 @@
.setAnfme(0D)
.setCheckQty(0D);
return R.ok(checkDiffItem);
+ }
+
+ /** 鎵墿鏂欏厛鏌ヨ鍥撅紝鍛戒腑鍚庡悓姝ョ墿鏂欎富鏁版嵁 */
+ private Matnr getMatnrByCodePreferView(String matnrCode) {
+ String code = StringUtils.trimToNull(matnrCode);
+ if (code == null) {
+ return null;
+ }
+ List<Map<String, Object>> viewItems = null;
+ try {
+ viewItems = cusItemSyncViewQueryService.listByItemNos(Collections.singletonList(code));
+ } catch (Exception ignore) {
+ }
+ Map<String, Object> row = null;
+ if (viewItems != null) {
+ row = viewItems.stream()
+ .filter(v -> StringUtils.equals(code, StringUtils.trimToNull(Objects.toString(v.get("item_no"), null))))
+ .findFirst()
+ .orElse(null);
+ }
+ if (row == null) {
+ return matnrService.getOneByCodeAndBatch(code, "");
+ }
+ String viewSpec = StringUtils.trimToEmpty(Objects.toString(row.get("item_spec"), ""));
+ String viewUnit = StringUtils.trimToNull(Objects.toString(row.get("unit_no"), null));
+ Long loginUserId = SystemAuthUtils.getLoginUserId() == null ? 1L : SystemAuthUtils.getLoginUserId();
+ Matnr local = matnrService.getOneByCodeAndBatch(code, "");
+ if (local == null) {
+ Matnr matnr = new Matnr();
+ matnr.setCode(code)
+ .setBatch("")
+ .setName(code)
+ .setSpec(viewSpec)
+ .setUnit(viewUnit)
+ .setStockUnit(viewUnit)
+ .setStatus(1)
+ .setCreateBy(loginUserId)
+ .setUpdateBy(loginUserId)
+ .setCreateTime(new Date())
+ .setUpdateTime(new Date());
+ if (!matnrService.save(matnr)) {
+ throw new CoolException("鐗╂枡淇℃伅淇濆瓨澶辫触");
+ }
+ return matnr;
+ }
+ boolean specDiff = !StringUtils.equals(StringUtils.trimToEmpty(local.getSpec()), viewSpec);
+ boolean unitDiff = viewUnit != null
+ && (!StringUtils.equals(StringUtils.trimToEmpty(local.getUnit()), viewUnit)
+ || !StringUtils.equals(StringUtils.trimToEmpty(local.getStockUnit()), viewUnit));
+ if (specDiff || unitDiff) {
+ Matnr update = new Matnr();
+ update.setId(local.getId());
+ if (specDiff) {
+ update.setSpec(viewSpec);
+ local.setSpec(viewSpec);
+ }
+ if (unitDiff) {
+ update.setUnit(viewUnit).setStockUnit(viewUnit);
+ local.setUnit(viewUnit);
+ local.setStockUnit(viewUnit);
+ }
+ update.setUpdateBy(loginUserId).setUpdateTime(new Date());
+ if (!matnrService.updateById(update)) {
+ throw new CoolException("鐗╂枡淇℃伅鏇存柊澶辫触");
+ }
+ }
+ return local;
}
@Override
@@ -350,11 +468,17 @@
.setMaktx(matnr.getName())
.setAnfme(item.getCheckQty());
- FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getValue, item.getFieldsIndex()).last("limit 1"));
- if (Objects.isNull(fieldsItem)) {
- throw new CoolException("褰撳墠绁ㄥ彿涓嶅瓨鍦ㄥ簱瀛樹腑锛岃鎷垮嚭鍚庨噸鏂板叆搴擄紒锛�");
+ // 绁ㄥ彿鏆備笉浣跨敤锛屼笉鏍¢獙绁ㄥ彿鏄惁瀛樺湪
+ FieldsItem fieldsItem = null;
+ if (StringUtils.isNotBlank(item.getFieldsIndex())) {
+ fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getValue, item.getFieldsIndex()).last("limit 1"));
+ // if (Objects.isNull(fieldsItem)) {
+ // throw new CoolException("褰撳墠绁ㄥ彿涓嶅瓨鍦ㄥ簱瀛樹腑锛岃鎷垮嚭鍚庨噸鏂板叆搴擄紒锛�");
+ // }
}
- taskItem.setFieldsIndex(fieldsItem.getUuid());
+ if (fieldsItem != null) {
+ taskItem.setFieldsIndex(fieldsItem.getUuid());
+ }
taskItems.add(taskItem);
});
@@ -463,7 +587,7 @@
.setPDQty(taskItem.getAnfme())
.setEditUser(nickName)
.setEditDate(taskItem.getUpdateTime())
- .setGoodsNO(fields.get("crushNo"))
+ // .setGoodsNO(fields.get("crushNo")) // 绁ㄥ彿鏆備笉浣跨敤
.setIsBad(0 + "")
.setMemoDtl(taskItem.getMemo());
--
Gitblit v1.9.1