| | |
| | | }, [dictTypeCode]); |
| | | |
| | | const http = async () => { |
| | | const res = await request.post('/warehouseAreas/page', {}); |
| | | const res = await request.post('/warehouseAreas/page', {current: 1, pageSize: 100}); |
| | | if (res?.data?.code === 200) { |
| | | setList(res.data.data.records.map((item) => { |
| | | return { |
| | |
| | | |
| | | const reset = () => { |
| | | setFormData({ |
| | | name: '', |
| | | code: '', |
| | | groupId: 0 |
| | | maktx: '', |
| | | matnrCode: '', |
| | | }) |
| | | } |
| | | |
| | |
| | | }; |
| | | |
| | | const getData = async () => { |
| | | const res = await request.post(`/matnr/page`, { |
| | | const res = await request.post(`/transfer/locs/items`, { |
| | | ...formData, |
| | | current: page, |
| | | pageSize: pageSize, |
| | |
| | | <Grid item md={3}> |
| | | <TextField |
| | | label={translate('table.field.matnr.name')} |
| | | name="name" |
| | | value={formData.name} |
| | | name="maktx" |
| | | value={formData.maktx} |
| | | onChange={handleChange} |
| | | size="small" |
| | | /> |
| | |
| | | <Grid item md={3}> |
| | | <TextField |
| | | label={translate('table.field.matnr.code')} |
| | | name="code" |
| | | value={formData.code} |
| | | name="matnrCode" |
| | | value={formData.matnrCode} |
| | | onChange={handleChange} |
| | | size="small" |
| | | /> |
| | | </Grid> |
| | | <Grid item md={3}> |
| | | <TreeSelectInput |
| | | label="table.field.matnr.groupId" |
| | | value={formData.groupId} |
| | | resource={'matnrGroup'} |
| | | source="groupId" |
| | | name="groupId" |
| | | onChange={handleChange} |
| | | /> |
| | | </Grid> |
| | | <Grid item md={2} sx={{ margin: 'auto' }}> |
| | |
| | | const [extendColumns, setExtendColumns] = useState([]); |
| | | |
| | | const [columns, setColumns] = useState([ |
| | | { field: 'name', headerName: translate('table.field.matnr.name'), width: 300 }, |
| | | { field: 'code', headerName: translate('table.field.matnr.code'), width: 200 }, |
| | | { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 }, |
| | | { field: 'maktx', headerName: translate('table.field.matnr.name'), width: 300 }, |
| | | { field: 'matnrCode', headerName: translate('table.field.matnr.code'), width: 200 }, |
| | | // { field: 'groupId$', headerName: translate('table.field.matnr.groupId'), width: 100 }, |
| | | { field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 }, |
| | | { field: 'batch', headerName: translate('table.field.locItem.batch'), width: 100 }, |
| | | { field: 'model', headerName: translate('table.field.matnr.model'), width: 100 }, |
| | | { field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 }, |
| | | { field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 }, |
| | | { field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 }, |
| | | { field: 'anfme', headerName: translate('table.field.locItem.anfme'), width: 100 }, |
| | | { field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 }, |
| | | { field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 }, |
| | | { field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 }, |
| | | { field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false }, |
| | | { field: 'wareArea', headerName: translate('table.field.locItem.wareArea'), width: 100, sortable: false }, |
| | | ]) |
| | | |
| | | const handleSelectionChange = (ids) => { |
| | |
| | | }, |
| | | { |
| | | field: 'anfme', |
| | | headerName: translate('table.field.outStockItem.anfme') + "*", |
| | | headerName: translate('table.field.outStockItem.anfme'), |
| | | type: 'number', |
| | | minWidth: 100, |
| | | flex: 1, |
| | | editable: true, |
| | | valueFormatter: (val) => val < 0 ? 0 : val, |
| | | headerClassName: "custom", |
| | | }, |
| | | { |
| | | field: 'splrCode', |
| | | headerName: translate('table.field.outStockItem.splrCode') + "*", |
| | | headerName: translate('table.field.outStockItem.splrCode'), |
| | | minWidth: 100, |
| | | flex: 1, |
| | | editable: true, |
| | | renderEditCell: (params) => ( |
| | | <SelectInputSplrCodeEditCell {...params} /> |
| | | ), |
| | | headerClassName: "custom", |
| | | }, |
| | | { |
| | | field: 'splrName', |
| | |
| | | renderEditCell: (params) => ( |
| | | <SelectInputSplrNameEditCell {...params} /> |
| | | ), |
| | | headerClassName: "custom", |
| | | }, |
| | | { |
| | | field: 'batch', |
| | |
| | | WrapperField, |
| | | useRecordContext, |
| | | DatagridConfigurable, |
| | | useRedirect, |
| | | } from 'react-admin'; |
| | | |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting.js'; |
| | |
| | | })); |
| | | |
| | | const TransferOrders = () => { |
| | | const redirct = useRedirect(); |
| | | const record = useRecordContext(); |
| | | if (!record) return null; |
| | | const translate = useTranslate(); |
| | |
| | | perPage={DEFAULT_PAGE_SIZE} |
| | | > |
| | | <StyledDatagrid |
| | | sx={{ width: '100%' }} |
| | | sx={{ margin: 'auto', width: '98%' }} |
| | | preferenceKey='outStock' |
| | | bulkActionButtons={false} |
| | | rowClick={false} |
| | | rowClick={(id, resource, record) => { |
| | | if (record.type == 'out') { |
| | | redirct("/outStock") |
| | | } else if (record.type == 'in') { |
| | | redirct("/asnOrder") |
| | | } |
| | | }} |
| | | expandSingle={true} |
| | | omit={['id', 'createTime', 'createBy$', 'memo']} |
| | | omit={['id', 'memo']} |
| | | > |
| | | <NumberField source="id" /> |
| | | <TextField source="code" label="table.field.transferOrder.code" /> |
| | |
| | | <NumberField source="anfme" label="table.field.transferOrder.anfme" /> |
| | | <NumberField source="workQty" label="table.field.transferOrder.workQty" /> |
| | | <NumberField source="qty" label="table.field.transferOrder.qty" /> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <TextField source="createBy$" label="common.field.createBy" /> |
| | | <TextField source="updateBy$" label="common.field.updateBy" /> |
| | | <DateField source="createTime" label="common.field.createTime" showTime /> |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime /> |
| | | <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" /> |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | </StyledDatagrid> |
| | |
| | | import com.vincent.rsf.server.common.domain.KeyValVo; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; |
| | | import com.vincent.rsf.server.manager.controller.params.OrgLocParams; |
| | | import com.vincent.rsf.server.manager.controller.params.TransferItemParams; |
| | | import com.vincent.rsf.server.manager.entity.Transfer; |
| | | import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; |
| | |
| | | |
| | | @ApiOperation("单据信息修改") |
| | | @PostMapping("/transfer/items/update") |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @PreAuthorize("hasAuthority('manager:transfer:update')") |
| | | public R orderAndrItemUpdate(@RequestBody TransferItemParams params) throws Exception { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | } |
| | | |
| | | |
| | | @ApiOperation("获取原库区物料信息") |
| | | @PostMapping("/transfer/locs/items") |
| | | @PreAuthorize("hasAuthority('manager:transfer:list')") |
| | | public R locsPage(@RequestBody OrgLocParams params) throws Exception { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return R.ok().add(transferService.getLocsItems(params, getLoginUserId())); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * @author Ryan |
New file |
| | |
| | | package com.vincent.rsf.server.manager.controller.params; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.experimental.Accessors; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @Accessors(chain = true) |
| | | @ApiModel(value = "OrgLocParams", description = "原库区物料") |
| | | public class OrgLocParams implements Serializable { |
| | | |
| | | @ApiModelProperty("原库区ID") |
| | | private Long orgAreaId; |
| | | |
| | | @ApiModelProperty("当前页") |
| | | private Integer current; |
| | | |
| | | @ApiModelProperty("物料编码") |
| | | private String matnrCode; |
| | | |
| | | @ApiModelProperty("物料名称") |
| | | private String maktx; |
| | | |
| | | @ApiModelProperty("当前页数") |
| | | private Integer pageSize; |
| | | |
| | | } |
| | |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | @ApiModelProperty("单据类型:in: 入库, out:出库") |
| | | private String type; |
| | | |
| | | @ApiModelProperty("调拔单ID") |
| | | private Long transferId; |
| | | |
| | | @ApiModelProperty("订单ID") |
| | | private Long orderId; |
| | | |
| | | @ApiModelProperty("执行状态") |
| | | private Integer exceStatus; |
| | | |
| | | } |
| | |
| | | return OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type; |
| | | } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.desc)) { |
| | | return OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type; |
| | | } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.desc)) { |
| | | return OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type; |
| | | } |
| | | return null; |
| | | } |
| | |
| | | return OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.desc; |
| | | } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)) { |
| | | return OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.desc; |
| | | } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) { |
| | | return OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.desc; |
| | | } |
| | | return null; |
| | | } |
| | |
| | | import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl; |
| | | import com.vincent.rsf.server.manager.utils.LocManageUtil; |
| | | import com.vincent.rsf.server.system.constant.GlobalConfigCode; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.entity.Config; |
| | | import com.vincent.rsf.server.system.service.ConfigService; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import com.vincent.rsf.server.system.utils.SystemAuthUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | |
| | | * @version 1.0 |
| | | */ |
| | | @Scheduled(cron = "0/5 * * * * ? ") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void complateOutStock() throws Exception { |
| | | List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id) |
| | |
| | | * @version 1.0 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void genInStock(List<TaskItem> taskItems) { |
| | | public void genInStock(List<TaskItem> taskItems) throws Exception { |
| | | Set<Long> orderIds = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet()); |
| | | List<WkOrder> wkOrders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, orderIds)); |
| | | wkOrders.forEach(wkOrder -> { |
| | |
| | | if (!orderItems.isEmpty()) { |
| | | WkOrder order = new WkOrder(); |
| | | BeanUtils.copyProperties(wkOrder, order); |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, order); |
| | | if (StringUtils.isNotBlank(ruleCode)) { |
| | | throw new CoolException("入库单号生成失败!!"); |
| | | } |
| | | order.setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type) |
| | | .setId(null) |
| | | .setType(OrderType.ORDER_IN.type) |
| | | .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val); |
| | | .setCode(ruleCode) |
| | | .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) |
| | | .setType(OrderType.ORDER_IN.type); |
| | | // Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN)); |
| | | // if (!Boolean.parseBoolean(config.getVal())) { |
| | | // order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val); |
| | | // } else { |
| | | // order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val); |
| | | // } |
| | | if (!asnOrderService.save(order)) { |
| | | throw new CoolException("入库单生成失败!!"); |
| | | } |
| | |
| | | throw new CoolException("入库单明细保存失败!!"); |
| | | } |
| | | }); |
| | | |
| | | Transfer transfer = transferService.getById(order.getPoId()); |
| | | |
| | | TransferOrder transferOrder = new TransferOrder(); |
| | | transferOrder.setOrderId(order.getId()) |
| | | .setType(OrderType.ORDER_IN.type) |
| | | .setTransferId(transfer.getId()); |
| | | if (!transferOrderService.save(transferOrder)) { |
| | | throw new CoolException("关联单保存失败!!"); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | Set<Long> taskIds = taskItems.stream().map(TaskItem::getTaskId).collect(Collectors.toSet()); |
| | | List<Task> tasks = taskService.listByIds(taskIds); |
| | | if (!tasks.isEmpty()) { |
| | | tasks.forEach(task -> { |
| | | TaskItem one = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()), false); |
| | | if (Objects.isNull(one)) { |
| | | throw new CoolException("数据错误:任务明细丢失!!"); |
| | | } |
| | | TransferOrder order = transferOrderService.getOne(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getOrderId, one.getOrderId())); |
| | | if (Objects.isNull(order)) { |
| | | throw new CoolException("数据错误!!"); |
| | | } |
| | | Transfer transfer = transferService.getById(order.getTransferId()); |
| | | Task task1 = new Task(); |
| | | BeanUtils.copyProperties(task, task1); |
| | | String targetLoc = LocManageUtil.getTargetLoc(transfer.getTarAreaId()); |
| | | if (Objects.isNull(targetLoc)) { |
| | | throw new CoolException("未能找到有效库位"); |
| | | } |
| | | task.setTaskType(TaskType.TASK_TYPE_IN.type) |
| | | .setTargLoc(targetLoc) |
| | | .setTargSite(null) |
| | | .setId(null) |
| | | .setTaskStatus(TaskStsType.GENERATE_IN.id); |
| | | if (!taskService.save(task1)) { |
| | | throw new CoolException("任务生成失败!!"); |
| | | } |
| | | List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); |
| | | if (items.isEmpty()) { |
| | | throw new CoolException("数据错误!!"); |
| | | } |
| | | items.forEach(taskItem -> { |
| | | TaskItem item = new TaskItem(); |
| | | BeanUtils.copyProperties(taskItem, item); |
| | | item.setTaskId(task1.getId()).setId(null); |
| | | if (!taskItemService.save(item)) { |
| | | throw new CoolException("入库任务明细保存失败!!"); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | // Set<Long> taskIds = taskItems.stream().map(TaskItem::getTaskId).collect(Collectors.toSet()); |
| | | // List<Task> tasks = taskService.listByIds(taskIds); |
| | | // if (!tasks.isEmpty()) { |
| | | // tasks.forEach(task -> { |
| | | // TaskItem one = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()), false); |
| | | // if (Objects.isNull(one)) { |
| | | // throw new CoolException("数据错误:任务明细丢失!!"); |
| | | // } |
| | | // TransferOrder order = transferOrderService.getOne(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getOrderId, one.getOrderId())); |
| | | // if (Objects.isNull(order)) { |
| | | // throw new CoolException("数据错误!!"); |
| | | // } |
| | | // Transfer transfer = transferService.getById(order.getTransferId()); |
| | | // Task task1 = new Task(); |
| | | // BeanUtils.copyProperties(task, task1); |
| | | // String targetLoc = LocManageUtil.getTargetLoc(transfer.getTarAreaId()); |
| | | // if (Objects.isNull(targetLoc)) { |
| | | // throw new CoolException("未能找到有效库位"); |
| | | // } |
| | | // task.setTaskType(TaskType.TASK_TYPE_IN.type) |
| | | // .setTargLoc(targetLoc) |
| | | // .setTargSite(null) |
| | | // .setId(null) |
| | | // .setTaskStatus(TaskStsType.GENERATE_IN.id); |
| | | // if (!taskService.save(task1)) { |
| | | // throw new CoolException("任务生成失败!!"); |
| | | // } |
| | | // List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); |
| | | // if (items.isEmpty()) { |
| | | // throw new CoolException("数据错误!!"); |
| | | // } |
| | | // items.forEach(taskItem -> { |
| | | // TaskItem item = new TaskItem(); |
| | | // BeanUtils.copyProperties(taskItem, item); |
| | | // item.setTaskId(task1.getId()).setId(null); |
| | | // if (!taskItemService.save(item)) { |
| | | // throw new CoolException("入库任务明细保存失败!!"); |
| | | // } |
| | | // }); |
| | | // }); |
| | | // } |
| | | } |
| | | |
| | | /** |
| | |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.params.OrgLocParams; |
| | | import com.vincent.rsf.server.manager.controller.params.TransferItemParams; |
| | | import com.vincent.rsf.server.manager.entity.LocItem; |
| | | import com.vincent.rsf.server.manager.entity.Transfer; |
| | | import com.vincent.rsf.server.manager.entity.WkOrder; |
| | | |
| | |
| | | Transfer genOutStock(Transfer transfer, Long loginUserId); |
| | | |
| | | boolean removeTransfer(List<Long> list); |
| | | |
| | | IPage<LocItem> getLocsItems(OrgLocParams params, Long loginUserId); |
| | | } |
| | | |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.common.domain.PageResult; |
| | | import com.vincent.rsf.server.manager.controller.params.OrgLocParams; |
| | | import com.vincent.rsf.server.manager.controller.params.TransferItemParams; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | |
| | | private TransferOrderService transferOrderService; |
| | | @Autowired |
| | | private TransferService transferService; |
| | | @Autowired |
| | | private AsnOrderService asnOrderService; |
| | | @Autowired |
| | | private AsnOrderItemService asnOrderItemService; |
| | | @Autowired |
| | | private LocItemService locItemService; |
| | | @Autowired |
| | | private LocService locService; |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | } |
| | | |
| | | TransferOrder transferOrder = new TransferOrder(); |
| | | transferOrder.setTransferId(transfer.getId()).setOrderId(wkOrder.getId()).setExceStatus((int)CheckExceStatus.CHECK_ORDER_STATUS_INIT.val); |
| | | transferOrder.setTransferId(transfer.getId()) |
| | | .setOrderId(wkOrder.getId()) |
| | | .setType(OrderType.ORDER_OUT.type); |
| | | |
| | | if (!transferOrderService.save(transferOrder)) { |
| | | throw new CoolException("单据关联失败!!"); |
| | | } |
| | | |
| | | try { |
| | | /**生成入库单据信息*/ |
| | | genInStock(wkOrder, orderItems); |
| | | } catch (Exception e) { |
| | | throw new CoolException(e.getMessage()); |
| | | } |
| | | |
| | | return transfer; |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/7/29 |
| | | * @description: TODO |
| | | * @version 1.0 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void genInStock(WkOrder wkOrder, List<WkOrderItem> orderItems) throws Exception { |
| | | WkOrder order = new WkOrder(); |
| | | BeanUtils.copyProperties(wkOrder, order); |
| | | order.setType(OrderType.ORDER_IN.type) |
| | | .setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type) |
| | | .setId(null); |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, order); |
| | | if (StringUtils.isBlank(ruleCode)) { |
| | | throw new CoolException("入库单号生成失败!!"); |
| | | } |
| | | order.setCode(ruleCode); |
| | | |
| | | if (!asnOrderService.save(order)) { |
| | | throw new CoolException("单据保存失败!!"); |
| | | } |
| | | |
| | | orderItems.forEach(item -> { |
| | | item.setOrderId(order.getId()) |
| | | .setOrderCode(order.getCode()) |
| | | .setId(null); |
| | | |
| | | if (!asnOrderItemService.save(item)) { |
| | | throw new CoolException("入库单明细保存失败!!"); |
| | | } |
| | | }); |
| | | |
| | | TransferOrder transferOrder = new TransferOrder(); |
| | | transferOrder.setTransferId(wkOrder.getPoId()) |
| | | .setOrderId(order.getId()) |
| | | .setType(OrderType.ORDER_IN.type); |
| | | |
| | | if (!transferOrderService.save(transferOrder)) { |
| | | throw new CoolException("单据关联失败!!"); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | transferItemService.remove(new LambdaQueryWrapper<TransferItem>().in(TransferItem::getTransferId, list)); |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/7/29 |
| | | * @description: 获取原库区物料信息 |
| | | * @version 1.0 |
| | | */ |
| | | @Override |
| | | public IPage<LocItem> getLocsItems(OrgLocParams params, Long loginUserId) { |
| | | List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>() |
| | | .eq(!Objects.isNull(params.getOrgAreaId()), Loc::getAreaId, params.getOrgAreaId())); |
| | | |
| | | Page<LocItem> page = new Page<>(params.getCurrent(), params.getPageSize()); |
| | | LambdaQueryWrapper<LocItem> wrapper = new LambdaQueryWrapper<>(); |
| | | |
| | | wrapper.eq(StringUtils.isNotBlank(params.getMatnrCode()), LocItem::getMatnrCode, params.getMatnrCode().trim()) |
| | | .like(StringUtils.isNotBlank(params.getMaktx().trim()), LocItem::getMaktx, params.getMaktx().trim()); |
| | | if (!locs.isEmpty()) { |
| | | Set<Long> locIds = locs.stream().map(Loc::getId).collect(Collectors.toSet()); |
| | | wrapper.in(LocItem::getLocId, locIds); |
| | | return locItemService.page(page, wrapper); |
| | | } else { |
| | | return locItemService.page(page, wrapper); |
| | | } |
| | | } |
| | | } |