From 63250869b7059e1ffc108a16eaffc557f8a44689 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 28 七月 2025 09:30:14 +0800
Subject: [PATCH] 调拔单功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java | 66 +++++++++++----
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java | 61 +++++++++++++++
rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 43 +++++++---
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java | 19 +++-
6 files changed, 155 insertions(+), 38 deletions(-)
diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
index 5251ed0..ada8d0f 100644
--- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
+++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
@@ -33,12 +33,12 @@
Grid,
Box,
} from '@mui/material';
-import DialogCloseButton from "../../components/DialogCloseButton.jsx";
import ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber';
-import CreateBySelectMats from "./CreateBySelectMats.jsx";
+import DialogCloseButton from "../../components/DialogCloseButton.jsx";
import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
-import { Add, Edit, Delete } from '@mui/icons-material';
import ConfirmButton from "../../components/ConfirmButton";
+import CreateBySelectMats from "./CreateBySelectMats.jsx";
+import { Add, Edit, Delete } from '@mui/icons-material';
import DictSelect from "../../components/DictSelect";
import { minHeight, padding } from "@mui/system";
import SaveIcon from '@mui/icons-material/Save';
@@ -60,16 +60,25 @@
}
};
+ const setFinally = () => {
+ const rows = tableRef.current.state.editRows;
+ for (const key in rows) {
+ const find = tabelData.find(item => item.matnrId === +key);
+ find.anfme = rows[key].anfme.value;
+ }
+ setTableData([...tabelData]);
+ }
+
const handleSubmit = async () => {
setFinally()
setDisabled(true)
- if (asnId === 0) {
+ if (orderId === 0) {
const parmas = {
"orders": formData,
"items": tabelData,
}
- const res = await request.post(`/outStock/items/save`, parmas);
+ const res = await request.post(`/transfer/items/save`, parmas);
if (res?.data?.code === 200) {
setOpen(false);
refresh();
@@ -82,7 +91,7 @@
"orders": formData,
"items": tabelData,
}
- const res = await request.post(`/outStock/items/update`, parmas);
+ const res = await request.post(`/transfer/items/update`, parmas);
if (res?.data?.code === 200) {
setOpen(false);
refresh();
@@ -92,7 +101,6 @@
}
}
setDisabled(false)
-
};
const handleSuccess = async (data) => {
@@ -109,6 +117,14 @@
notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
};
+
+ const handleChange = (value, name) => {
+ setFormData((prevData) => ({
+ ...prevData,
+ [name]: value
+ }));
+ };
+
return (
<>
<Box sx={{ padding: 1 }}>
@@ -118,22 +134,21 @@
<Grid item md={2}>
<DictSelect
label={translate("table.field.transfer.type")}
- value={formData.wkType}
+ value={formData.type}
variant="filled"
- group='2'
- onChange={(e) => handleChange(e.target.value, 'wkType')}
- dictTypeCode="sys_business_type"
+ onChange={(e) => handleChange(e.target.value, 'type')}
+ dictTypeCode="sys_transfer_type"
required
/>
</Grid>
<Grid item md={2}>
- <ReferenceInput reference="warehouseAreas" source="name">
+ <ReferenceInput reference="warehouseAreas" source="orgAreaName">
<AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" />
</ReferenceInput>
</Grid>
<Grid item md={2}>
- <ReferenceInput reference="warehouseAreas" source="name">
- <AutocompleteInput optionText="name" label="table.field.transfer.orgAreaName" />
+ <ReferenceInput reference="warehouseAreas" source="tarAreaName">
+ <AutocompleteInput optionText="name" label="table.field.transfer.tarAreaName" />
</ReferenceInput>
</Grid>
</Grid>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
index e9127c3..c81c788 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TransferItem.java
@@ -1,16 +1,17 @@
package com.vincent.rsf.server.manager.entity;
-import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.*;
+
import java.text.SimpleDateFormat;
import java.util.Date;
+
+import lombok.experimental.Accessors;
+import org.checkerframework.checker.units.qual.A;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -22,6 +23,7 @@
import java.util.Date;
@Data
+@Accessors(chain = true)
@TableName("man_transfer_item")
public class TransferItem implements Serializable {
@@ -100,6 +102,15 @@
@ApiModelProperty(value= "渚涘簲鍟咺D")
private Long splrId;
+ @TableField(exist = false)
+ @ApiModelProperty("渚涘簲鍟嗙紪鐮�")
+ private String splrCode;
+
+
+ @TableField(exist = false)
+ @ApiModelProperty("渚涘簲鍟嗗悕绉�")
+ private String splrName;
+
/**
* 瑙勬牸
*/
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java
index c23e0f3..86a1331 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TransferType.java
@@ -14,7 +14,6 @@
TRANSFER_TYPE_LOCAL("0", "鏈湴璋冩嫈");
private Integer val;
-
private String desc;
TransferType(String val, String desc) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
index b61038a..4c9bcb4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TransferItemService.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.entity.TransferItem;
+import java.util.Map;
+
public interface TransferItemService extends IService<TransferItem> {
+ boolean fieldsSave(Map<String, Object> item, Long loginUserId);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
index 094d00f..b0631b0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferItemServiceImpl.java
@@ -1,12 +1,73 @@
package com.vincent.rsf.server.manager.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.common.Cools;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
+import com.vincent.rsf.server.manager.entity.Companys;
+import com.vincent.rsf.server.manager.entity.WkOrderItem;
+import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.mapper.TransferItemMapper;
import com.vincent.rsf.server.manager.entity.TransferItem;
+import com.vincent.rsf.server.manager.service.CompanysService;
import com.vincent.rsf.server.manager.service.TransferItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.Objects;
@Service("transferItemService")
public class TransferItemServiceImpl extends ServiceImpl<TransferItemMapper, TransferItem> implements TransferItemService {
+ @Autowired
+ private CompanysService companysService;
+
+
+ /**
+ * @author Ryan
+ * @date 2025/7/28
+ * @description: 璋冩嫈鍗曟墿灞曞瓧娈典繚瀛�
+ * @version 1.0
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean fieldsSave(Map<String, Object> params, Long loginUserId) {
+ TransferItem wkOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), TransferItem.class);
+ if (StringUtils.isNoneBlank(wkOrderItem.getSplrCode())) {
+ Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
+ .eq(Companys::getId, wkOrderItem.getSplrCode())
+ .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val));
+ if (!Objects.isNull(companys)) {
+ wkOrderItem.setSplrId(companys.getId());
+ }
+ }
+ if (Objects.isNull(wkOrderItem.getAnfme()) || Double.compare(wkOrderItem.getAnfme(), 0.0) <= 0) {
+ throw new CoolException("璁″垝鏁颁笉鑳戒负绌猴紒锛�");
+ }
+ //淇濆瓨鎵╁睍瀛楁
+ try {
+ StringBuffer sb = new StringBuffer();
+ if (Objects.isNull(wkOrderItem.getFieldsIndex()) || StringUtils.isBlank(wkOrderItem.getFieldsIndex())) {
+ sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getBatch() );
+ //鑾峰彇16浣島uid
+ String uuid16 = Cools.md5Chinese(sb.toString());
+ wkOrderItem.setFieldsIndex(uuid16);
+ params.put("index", uuid16);
+ }
+ //淇濆瓨鎴栨洿鏂板姩鎬佸瓧娈靛��
+ FieldsUtils.updateFieldsValue(params);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ wkOrderItem.setUpdateBy(loginUserId).setCreateBy(loginUserId);
+ if (!this.saveOrUpdate(wkOrderItem)) {
+ throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+ }
+ return true;
+ }
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java
index fa85fe3..cf840e9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java
@@ -4,6 +4,7 @@
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.TransferItemParams;
+import com.vincent.rsf.server.manager.entity.TransferItem;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
@@ -12,11 +13,14 @@
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.mapper.TransferMapper;
import com.vincent.rsf.server.manager.entity.Transfer;
+import com.vincent.rsf.server.manager.service.AsnOrderItemService;
+import com.vincent.rsf.server.manager.service.TransferItemService;
import com.vincent.rsf.server.manager.service.TransferService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -25,6 +29,9 @@
@Service("transferService")
public class TransferServiceImpl extends ServiceImpl<TransferMapper, Transfer> implements TransferService {
+
+ @Autowired
+ private TransferItemService transferItemService;
/**
* @author Ryan
@@ -68,25 +75,29 @@
}
+ /**
+ * @author Ryan
+ * @date 2025/7/28
+ * @description: 璋冩嫈鍗曟嵁淇敼
+ * @version 1.0
+ */
private void svaeOrUpdateOrderItem(TransferItemParams params, Long loginUserId) {
-// Transfer orders = params.getTransfer();
-// params.getItems().forEach(item -> {
-// item.put("orderId", orders.getId());
-// item.put("orderCode", orders.getCode());
-// item.put("poCode", orders.getPoCode());
-// item.put("createBy", loginUserId);
-// item.put("updateBy", loginUserId);
-// if (!asnOrderItemService.fieldsSave(item, loginUserId)) {
-// throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
-// }
-// });
-// List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
-// .eq(WkOrderItem::getOrderId, params.getOrders().getId()));
-// Double sum = orderItems.stream().mapToDouble(WkOrderItem::getAnfme).sum();
-// orders.setAnfme(sum);
-// if (!this.updateById(orders)) {
-// throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒");
-// }
+ Transfer orders = params.getTransfer();
+ params.getItems().forEach(item -> {
+ item.put("transferId", orders.getId());
+ item.put("transferCode", orders.getCode());
+ item.put("createBy", loginUserId);
+ item.put("updateBy", loginUserId);
+ if (!transferItemService.fieldsSave(item, loginUserId)) {
+ throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+// List<TransferItem> orderItems = transferItemService.list(new LambdaQueryWrapper<TransferItem>()
+// .eq(TransferItem::getTransferId, params.getTransfer().getId()));
+// Double sum = orderItems.stream().mapToDouble(TransferItem::getAnfme).sum();
+ if (!this.updateById(orders)) {
+ throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒");
+ }
}
@@ -98,6 +109,23 @@
*/
@Override
public R updateTransfer(TransferItemParams params, Long loginUserId) {
- return null;
+ Transfer orders = params.getTransfer();
+ if (Objects.isNull(orders)) {
+ throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(orders.getId())) {
+ throw new CoolException("鏁版嵁閿欒锛氬崟鎹甀D涓嶈兘涓虹┖锛侊紒");
+ }
+ if (!this.updateById(orders)) {
+ throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
+ }
+ if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) {
+ return R.ok("鏄庣粏鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+
+ svaeOrUpdateOrderItem(params, loginUserId);
+
+ return R.ok("淇敼瀹屾垚锛侊紒");
+
}
}
--
Gitblit v1.9.1