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> 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= "供应商ID") private Long splrId; @TableField(exist = false) @ApiModelProperty("供应商编码") private String splrCode; @TableField(exist = false) @ApiModelProperty("供应商名称") private String splrName; /** * 规格 */ 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) { 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); } 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位uuid 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; } } 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("数据错误:单据ID不能为空!!"); } if (!this.updateById(orders)) { throw new CoolException("主单修改失败!!"); } if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) { return R.ok("明细参数不能为空!!"); } svaeOrUpdateOrderItem(params, loginUserId); return R.ok("修改完成!!"); } }