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