| | |
| | | } |
| | | }; |
| | | |
| | | const handleSuccess = async (data) => { |
| | | setOpen(false); |
| | | notify('common.response.success'); |
| | | }; |
| | | |
| | | const handleError = async (error) => { |
| | | notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); |
| | | }; |
| | | |
| | | return ( |
| | | <> |
| | | <CreateBase |
| | | record={{}} |
| | | transform={(data) => { |
| | | return data; |
| | | }} |
| | | mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} |
| | | // record={{}} |
| | | // transform={(data) => { |
| | | // console.log('success========>'); |
| | | |
| | | // return data; |
| | | // }} |
| | | // mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} |
| | | > |
| | | <Dialog |
| | | open={open} |
| | |
| | | import { |
| | | List, |
| | | DatagridConfigurable, |
| | | SearchInput, |
| | | TopToolbar, |
| | | Button, |
| | | SelectColumnsButton, |
| | | EditButton, |
| | | FilterButton, |
| | | CreateButton, |
| | | ExportButton, |
| | | BulkDeleteButton, |
| | | WrapperField, |
| | | useRecordContext, |
| | | useTranslate, |
| | | useNotify, |
| | | useListContext, |
| | | FunctionField, |
| | | TextField, |
| | | NumberField, |
| | | DateField, |
| | | BooleanField, |
| | | ReferenceField, |
| | | TextInput, |
| | | DateTimeInput, |
| | | DateInput, |
| | | SelectInput, |
| | | NumberInput, |
| | | ReferenceInput, |
| | | ReferenceArrayInput, |
| | | AutocompleteInput, |
| | | DeleteButton, |
| | | SimpleForm, |
| | | required, |
| | | Form, |
| | | useRefresh, |
| | |
| | | setRows(fetchRows) |
| | | } else { |
| | | const mas = fetchRows.filter(item => selectedMatnr.includes(item.matnrCode)); |
| | | setRows(mas) |
| | | console.log(mas); |
| | | let ids = mas.map(item => item.matnrCode); |
| | | console.log(ids); |
| | | const { data: { code, data, msg } } = request.get('/check/order/items/' + ids ); |
| | | if (code === 200) { |
| | | setFetchRows(data) |
| | | } else { |
| | | notify(msg); |
| | | } |
| | | // setRows(mas) |
| | | } |
| | | }, [selectedMatnr]) |
| | | |
| | |
| | | if (formData.waveId == null && formData.waveId == undefined) { |
| | | return |
| | | } |
| | | const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData }); |
| | | const { data: { code, data, msg } } = await request.post('/check/order/items', { ...formData }); |
| | | if (code === 200) { |
| | | setFetchRows(data) |
| | | } else { |
| | |
| | | return checkOrderService.saveCheckOrder(params, getLoginUserId()); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("盘点单信息修改") |
| | | @PostMapping("/check/items/update") |
| | | @PreAuthorize("hasAuthority('manager:check:update')") |
| | |
| | | return checkOrderService.updateOrderItem(params, getLoginUserId()); |
| | | } |
| | | |
| | | @PostMapping("/outStock/order/getOutTaskItems") |
| | | @PostMapping("/check/order/items") |
| | | @ApiOperation("盘点出库预览") |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PreAuthorize("hasAuthority('manager:check:list')") |
| | | public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) { |
| | | if (Cools.isEmpty(param)) { |
| | | return R.error("参数不能为空"); |
| | | } |
| | | |
| | | return checkOrderService.genCheckPreview(param); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取出库站点 |
| | |
| | | } |
| | | |
| | | |
| | | @ApiOperation("获取在库物料列表") |
| | | @GetMapping("/check/order/locs/{matnr}") |
| | | @PreAuthorize("hasAuthority('manager:check:list')") |
| | | public R getAllLocByMatnr(@PathVariable String[] matnrs) { |
| | | if (Objects.isNull(matnrs)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return checkOrderService.getAllLocByMatnr(Arrays.asList(matnrs)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @description 下载模板 |
| | |
| | | package com.vincent.rsf.server.manager.enums;
|
| | |
|
| | |
|
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
| | | import com.vincent.rsf.framework.common.SpringUtils;
|
| | | import com.vincent.rsf.framework.exception.CoolException;
|
| | |
|
| | | public enum LocStsType {
|
| | |
|
| | | //空板
|
| | |
| | | package com.vincent.rsf.server.manager.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Constants; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.entity.LocItem; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.vincent.rsf.server.manager.entity.ViewStockManage; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface LocItemMapper extends BaseMapper<LocItem> { |
| | | |
| | | IPage<ViewStockManage> pageByStock(PageParam<ViewStockManage, BaseParam> pageParam, @Param(Constants.WRAPPER) QueryWrapper<ViewStockManage> queryWrapper); |
| | | List<LocItem> listByMatnr(@Param("type") String type, @Param(Constants.WRAPPER) LambdaQueryWrapper<LocItem> matnr); |
| | | } |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | public interface CheckOrderService extends IService<WkOrder> { |
| | | |
| | |
| | | R getSiteNos(); |
| | | |
| | | R genCheckPreview(OrderOutTaskParam param); |
| | | |
| | | R getAllLocByMatnr(List<String> matnrs); |
| | | } |
| | |
| | | import com.vincent.rsf.server.manager.entity.LocItem; |
| | | import com.vincent.rsf.server.manager.entity.Task; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface LocItemService extends IService<LocItem> { |
| | | |
| | | void generateTask(Short resouce, LocToTaskParams map, Long loginUserId) throws Exception; |
| | | |
| | | Task genMoveTask(LocToTaskParams map, Long loginUserId); |
| | | |
| | | List<LocItem> listByMatnr(List<String> matnrs); |
| | | } |
| | |
| | | import com.vincent.rsf.server.common.utils.ExcelUtil; |
| | | import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; |
| | | import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; |
| | | import com.vincent.rsf.server.manager.entity.DeviceSite; |
| | | import com.vincent.rsf.server.manager.entity.WkOrder; |
| | | import com.vincent.rsf.server.manager.entity.WkOrderItem; |
| | | import com.vincent.rsf.server.manager.entity.Matnr; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.manager.mapper.CheckOrderMapper; |
| | |
| | | private AsnOrderItemService asnOrderItemService; |
| | | @Autowired |
| | | private DeviceSiteService deviceSiteService; |
| | | @Autowired |
| | | private LocItemService locItemService; |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | */ |
| | | @Override |
| | | public R genCheckPreview(OrderOutTaskParam param) { |
| | | List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, param.getOrderId())); |
| | | if (orderItems.isEmpty()) { |
| | | throw new CoolException("数据错误:盘点单明细不存在!!"); |
| | | } |
| | | return R.ok().add(orderItems); |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/7/16 |
| | | * @description: 根据物料码获取所有在库明细 |
| | | * @version 1.0 |
| | | */ |
| | | @Override |
| | | public R getAllLocByMatnr(List<String> matnrs) { |
| | | List<LocItem> locItems = locItemService.listByMatnr(matnrs); |
| | | if (locItems.isEmpty()) { |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | |
| | | } |
| | | return task; |
| | | } |
| | | |
| | | /** |
| | | * @author Ryan |
| | | * @date 2025/7/16 |
| | | * @description: 获取当前物料所有库存信息 |
| | | * @version 1.0 |
| | | */ |
| | | @Override |
| | | public List<LocItem> listByMatnr(List<String> matnr) { |
| | | LambdaQueryWrapper<LocItem> wrapper = new LambdaQueryWrapper<LocItem>() |
| | | .in(!matnr.isEmpty(), LocItem::getMatnrCode, matnr); |
| | | return this.baseMapper.listByMatnr(LocStsType.LOC_STS_TYPE_F.type, wrapper); |
| | | } |
| | | } |
| | |
| | | List<PurchaseTemplate> list = listMap.get(key); |
| | | Purchase serviceOne = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, key)); |
| | | if (!Objects.isNull(serviceOne)) { |
| | | // return R.error(serviceOne.getCode() + "单据已存在!!"); |
| | | throw new CoolException(serviceOne.getCode() + "单据已存在!!"); |
| | | } |
| | | PurchaseTemplate template = list.stream().findFirst().get(); |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.vincent.rsf.server.manager.mapper.LocItemMapper"> |
| | | |
| | | <select id="listByMatnr" resultType="com.vincent.rsf.server.manager.entity.LocItem"> |
| | | SELECT |
| | | * |
| | | FROM |
| | | ( |
| | | SELECT |
| | | li.id, |
| | | li.loc_id, |
| | | li.loc_code, |
| | | l.barcode, |
| | | li.matnr_id, |
| | | li.matnr_code, |
| | | li.maktx, |
| | | li.batch, |
| | | SUM( li.anfme ) anfme, |
| | | li.fields_index |
| | | FROM |
| | | man_loc_item li |
| | | INNER JOIN man_loc l ON l.id = li.loc_id |
| | | WHERE l.use_status = #{type} |
| | | GROUP BY |
| | | loc_id, |
| | | matnr_id, |
| | | batch, |
| | | fields_index |
| | | )t |
| | | ${ew.customSqlSegment} |
| | | </select> |
| | | </mapper> |