Merge remote-tracking branch 'origin/devlop-phyz' into devlop-phyz
# Conflicts:
# rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
| | |
| | | orderCode: "单号", |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | | platWorkCode: '工单号', |
| | | platWorkCode: '计划跟踪号', |
| | | projectCode: '项目号', |
| | | maktx: "物料名称", |
| | | spec: "规格", |
| | |
| | | model: "型号", |
| | | fieldsIndex: "字段索引", |
| | | platOrderCode: "客单号", |
| | | platWorkCode: "工单号", |
| | | platWorkCode: "计划跟踪号", |
| | | projectCode: "项目单号", |
| | | }, |
| | | |
| | |
| | | platItemId: '行号', |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | | platWorkCode: '工单号', |
| | | platWorkCode: '计划跟踪号', |
| | | projectCode: '项目号', |
| | | maktx: "物料名称", |
| | | spec: "规格", |
| | |
| | | import { styled } from '@mui/material/styles'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | |
| | | import request from '@/utils/request'; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import { fetchInOrderItemColumns } from '../config/orderItemColumns'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | }, []); |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />, |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />, |
| | | // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />, |
| | | // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />, |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />, |
| | | <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />, |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" />, |
| | | <TextField source="model" label="table.field.asnOrderItem.model" />, |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" />, |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />, |
| | | <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />, |
| | | <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />, |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />, |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" />, |
| | | <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />, |
| | | <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />, |
| | | <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />, |
| | | <TextField source="packName" label="table.field.asnOrderItem.packName" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | const result = await fetchInOrderItemColumns(); |
| | | if (result.success) { |
| | | setColumns(result.columns); |
| | | } else { |
| | | notify(msg); |
| | | notify(result.msg); |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | import React from "react"; |
| | | import { |
| | | TextField, |
| | | NumberField, |
| | | DateField, |
| | | ReferenceField, |
| | | } from 'react-admin'; |
| | | import request from '@/utils/request'; |
| | | |
| | | /** |
| | | * 获取出库订单明细的基础列配置 |
| | | * @returns {Array} 基础列数组 |
| | | */ |
| | | export const getOutOrderItemBaseColumns = () => [ |
| | | <NumberField source="id" key="id" />, // id |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号 |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号 |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码 |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称 |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号 |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码 |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称 |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次 |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格 |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量 |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量 |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位 |
| | | ]; |
| | | |
| | | /** |
| | | * 获取入库订单明细的基础列配置 |
| | | * @returns {Array} 基础列数组 |
| | | */ |
| | | export const getInOrderItemBaseColumns = () => [ |
| | | <NumberField source="id" key="id" />, // id |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号 |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号 |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码 |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称 |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号 |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码 |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称 |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次 |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格 |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量 |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量 |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位 |
| | | ]; |
| | | |
| | | /** |
| | | * 获取动态扩展字段列 |
| | | * @param {Array} fieldsData - 动态字段数据 |
| | | * @returns {Array} 动态字段列数组 |
| | | */ |
| | | export const getExtendFieldColumns = (fieldsData) => { |
| | | return fieldsData.map(el => ( |
| | | <TextField |
| | | key={el.fields} |
| | | source={`extendFields.[${el.fields}]`} |
| | | label={el.fieldsAlise} |
| | | /> |
| | | )); |
| | | }; |
| | | |
| | | /** |
| | | * 获取订单明细的尾部列配置(时间和操作人信息) |
| | | * @returns {Array} 尾部列数组 |
| | | */ |
| | | export const getLastColumns = () => [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime key="updateTime" />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false} key="updateBy"> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false} key="createBy"> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime key="createTime" />, |
| | | ]; |
| | | |
| | | /** |
| | | * 组合入库订单明细所有列配置 |
| | | * @param {Array} extendFieldsData - 动态扩展字段数据 |
| | | * @returns {Array} 完整的列配置数组 |
| | | */ |
| | | export const buildInOrderItemColumns = (extendFieldsData = []) => { |
| | | return [ |
| | | ...getInOrderItemBaseColumns(), |
| | | ...getExtendFieldColumns(extendFieldsData), |
| | | ...getLastColumns() |
| | | ]; |
| | | }; |
| | | |
| | | /** |
| | | * 组合出库订单明细所有列配置 |
| | | * @param {Array} extendFieldsData - 动态扩展字段数据 |
| | | * @returns {Array} 完整的列配置数组 |
| | | */ |
| | | export const buildOutOrderItemColumns = (extendFieldsData = []) => { |
| | | return [ |
| | | ...getOutOrderItemBaseColumns(), |
| | | ...getExtendFieldColumns(extendFieldsData), |
| | | ...getLastColumns() |
| | | ]; |
| | | }; |
| | | |
| | | /** |
| | | * 获取动态字段并构建完整列配置 |
| | | * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>} |
| | | */ |
| | | export const fetchInOrderItemColumns = async () => { |
| | | try { |
| | | const { data: { code, data, msg } } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | return { success: true, columns: buildInOrderItemColumns(data) }; |
| | | } else { |
| | | return { success: false, msg }; |
| | | } |
| | | } catch (error) { |
| | | return { success: false, msg: error.message }; |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * 获取动态字段并构建完整列配置 |
| | | * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>} |
| | | */ |
| | | export const fetchOutOrderItemColumns = async () => { |
| | | try { |
| | | const { data: { code, data, msg } } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | return { success: true, columns: buildOutOrderItemColumns(data) }; |
| | | } else { |
| | | return { success: false, msg }; |
| | | } |
| | | } catch (error) { |
| | | return { success: false, msg: error.message }; |
| | | } |
| | | }; |
| | |
| | | import { styled } from '@mui/material/styles'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | |
| | | import request from '@/utils/request'; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import { fetchOutOrderItemColumns } from '../config/orderItemColumns'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | }, []); |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />, |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />, |
| | | // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />, |
| | | // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />, |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />, |
| | | <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />, |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" />, |
| | | <TextField source="model" label="table.field.asnOrderItem.model" />, |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" />, |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />, |
| | | <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />, |
| | | <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />, |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />, |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" />, |
| | | <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />, |
| | | <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />, |
| | | <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />, |
| | | <TextField source="packName" label="table.field.asnOrderItem.packName" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | const result = await fetchOutOrderItemColumns(); |
| | | if (result.success) { |
| | | setColumns(result.columns); |
| | | } else { |
| | | notify(msg); |
| | | notify(result.msg); |
| | | } |
| | | } |
| | | |
| | |
| | | private AgvService agvService; |
| | | |
| | | @ApiOperation("站点绑定查询") |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @PostMapping("/staBind/list") |
| | | public R getStaBindList(@RequestBody Map<String, Object> params) { |
| | | if (Objects.isNull(params)) { |
| | |
| | | } |
| | | |
| | | @ApiOperation("站点查询") |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @PostMapping("/staMsg/select") |
| | | public R getStaMsgSelect(@RequestBody Map<String, Object> params) { |
| | | if (Objects.isNull(params)) { |
| | |
| | | return agvService.getStaMsgSelect(params); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @ApiOperation("站点绑定") |
| | | @PostMapping("/AGV/staBind") |
| | | public R getAGVStaBind(@RequestBody WaitPakinParam waitPakinPda) { |
| | |
| | | return agvService.getAGVStaBind(waitPakinPda); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @ApiOperation("站点解绑") |
| | | @PostMapping("/AGV/staUnBind") |
| | | public R getAGVStaUnBind(@RequestBody Map<String, Object> params) { |
| | |
| | | return agvService.AGVStaUnBind(params); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @ApiOperation("AGV启动入库") |
| | | @PostMapping("/AGV/task/start") |
| | | public R AGVInTaskStart(@RequestBody WaitPakinParam waitPakinPda) { |
| | |
| | | return agvService.AGVInTaskStart(waitPakinPda, getLoginUserId()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:basStation:list')") |
| | | @ApiOperation("AGV绑定&入库") |
| | | @PostMapping("/AGV/bindAndIn/start") |
| | | public R AGVBindAndInTaskStart(@RequestBody WaitPakinParam waitPakinPda) { |
| | |
| | | @Autowired |
| | | private InBoundService inBoundService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/in/emptyContainer/warehousing") |
| | | @ApiOperation("空容器入库") |
| | | public R emptyContainerWarehousing(@RequestBody PdaGeneralParam param) { |
| | | return inBoundService.generateTasks(param,getLoginUserId()); |
| | | return inBoundService.generateTasks(param, getLoginUserId()); |
| | | } |
| | | |
| | | } |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private AgvService agvService; |
| | | |
| | | /** |
| | | * PDA用户登录 |
| | | * |
| | | * @param param |
| | | * @param request |
| | | * @return |
| | |
| | | return mobileService.login(param, request); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 标准扫码收货信息 |
| | | * |
| | | * @param trackCode |
| | | * @return |
| | | */ |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | @GetMapping("/orders/{trackCode}") |
| | | @ApiOperation("标准扫码收货") |
| | | public R getOrderBybarcode(@PathVariable String trackCode) { |
| | | public R getOrderBybarcode(@PathVariable String trackCode) { |
| | | if (StringUtils.isEmpty(trackCode)) { |
| | | throw new CoolException("条码不能为空!!"); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 确认收货信息 |
| | | * |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @PreAuthorize("hasAuthority('manager:warehouseAreas:save')") |
| | | @PostMapping("/orders/confirm") |
| | | @ApiOperation("确认收货") |
| | | public R confirmReceipt(@RequestBody Map<String, Object> params) { |
| | | if (Objects.isNull(params)) { |
| | | throw new CoolException("请求参数不能为空!!"); |
| | | } |
| | | if (Objects.isNull(params)) { |
| | | throw new CoolException("请求参数不能为空!!"); |
| | | } |
| | | return mobileService.receiptToWarehouse(params, getLoginUserId()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | @PostMapping("/orders/other") |
| | | @ApiOperation("其它扫码收货") |
| | | public R getOtherReceipt(@RequestBody OtherReceiptParams params) { |
| | |
| | | return mobileService.otherReceipt(params); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:warehouseAreas:list')") |
| | | @ApiOperation("获取收货区") |
| | | @GetMapping("/areas/receipt") |
| | | public R getReceiptAreas() { |
| | | return mobileService.getReceiptAreas(getLoginUser()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:warehouseAreas:list')") |
| | | @ApiOperation("获取可用库区") |
| | | @GetMapping("/areas/user/all") |
| | | public R getAreasUserAll() { |
| | | return mobileService.getAreasUserAll(getLoginUser()); |
| | | } |
| | | |
| | | |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | @GetMapping("/orders/asn") |
| | | @ApiOperation("获取通知单") |
| | | public R getAllAsnOrders() { |
| | | return R.ok(mobileService.getAllAsnOrders()); |
| | | } |
| | | |
| | | |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | @GetMapping("/dynamic/fields") |
| | | @ApiOperation("获取动态字段") |
| | | public R getDynamicFields() { |
| | | return R.ok(mobileService.getDynamicFields()); |
| | | } |
| | | |
| | | |
| | | @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") |
| | | @ApiOperation("获取订单物料明细") |
| | | @PostMapping("/asnOrderItem/trackCode") |
| | | public R getItemByTrackCode(@RequestBody Map<String, Object> params) { |
| | |
| | | return mobileService.getDeltByCode(params); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") |
| | | @ApiOperation("获取拖盘明细") |
| | | @PostMapping("/asnOrderItem/container") |
| | | public R getItemByContainer(@RequestBody Map<String, Object> params) { |
| | |
| | | if (!Objects.isNull(params.get("type")) && params.get("type").equals("unbind")) { |
| | | return mobileService.getUnItemByContainer(params); |
| | | } else { |
| | | return mobileService.getItemByContainer(params,getLoginUser()); |
| | | return mobileService.getItemByContainer(params, getLoginUser()); |
| | | } |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:update')") |
| | | @ApiOperation("组托") |
| | | @PostMapping("/waitPakin/merge") |
| | | public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { |
| | | Long userId = getLoginUserId(); |
| | | if (Objects.isNull(waitPakin)) { |
| | | return R.error( "参数不能为空!!"); |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | if (org.apache.commons.lang3.StringUtils.isBlank(waitPakin.getBarcode())) { |
| | | return R.error("托盘码不能为空!!"); |
| | |
| | | if (Objects.isNull(waitPakin.getItems()) || waitPakin.getItems().isEmpty()) { |
| | | return R.error("跟踪码不能为空!!"); |
| | | } |
| | | try{ |
| | | try { |
| | | mobileService.mergeItemsWcs(waitPakin, userId); |
| | | } catch (Exception e){ |
| | | } catch (Exception e) { |
| | | return R.error(e.getMessage()); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:update')") |
| | | @ApiOperation("组拖解绑") |
| | | @PostMapping("/waitPakin/unbind") |
| | | public R pakinUnBind(@RequestBody WaitPakinParam param) { |
| | |
| | | |
| | | @ApiOperation("报检") |
| | | @GetMapping("/asnOrder/inspect/{code}") |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | |
| | | public R getAsnOdrers(@PathVariable String code) { |
| | | if (Objects.isNull(code)) { |
| | | throw new CoolException("参数不能为空!!"); |
| | |
| | | |
| | | @ApiOperation("提交报检") |
| | | @GetMapping("/inspect/confirm/{id}") |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | |
| | | public R confirmInspect(@PathVariable String id) { |
| | | if (Objects.isNull(id)) { |
| | | throw new CoolException("参数不能为空!"); |
| | | } |
| | | return mobileService.confirmIspt(id); |
| | | return mobileService.confirmIspt(id); |
| | | } |
| | | |
| | | @ApiOperation("快速质检信息") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:list')") |
| | | // @PostMapping("/inspect/query") |
| | | |
| | | // @PostMapping("/inspect/query") |
| | | public R checkObjs(@RequestBody CheckObjParams params) { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | return mobileService.checkObjs(params); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("快速质检") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:update')") |
| | | |
| | | @PostMapping("/inspect/check/update") |
| | | public R checkUpdate(@RequestBody List<QlyIsptItem> params) { |
| | | if (Objects.isNull(params) || params.isEmpty()) { |
| | |
| | | } |
| | | |
| | | @ApiOperation("获取上架信息") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:list')") |
| | | |
| | | @PostMapping("/stock/operate/list") |
| | | public R operateToStock(@RequestBody OpStockParams params) { |
| | | if (Objects.isNull(params)) { |
| | |
| | | } |
| | | |
| | | @ApiOperation("人工上架") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:update')") |
| | | |
| | | @PostMapping("/stock/operate") |
| | | public R publicToStock(@RequestBody ManualShelvingParams params) { |
| | | if (Cools.isEmpty(params.getItemList()) || Cools.isEmpty(params.getLocCode()) || Cools.isEmpty(params.getBarcode())) { |
| | | if (Cools.isEmpty(params.getItemList()) || Cools.isEmpty(params.getLocCode()) |
| | | || Cools.isEmpty(params.getBarcode())) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode())); |
| | | |
| | | WaitPakin waitPakin = waitPakinService |
| | | .getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode())); |
| | | |
| | | return taskService.generateFlatWarehouseTasks(waitPakin, params.getLocCode(), getLoginUserId()); |
| | | // return mobileService.publicToStock(params, getLoginUserId()); |
| | | // return mobileService.publicToStock(params, getLoginUserId()); |
| | | } |
| | | |
| | | @ApiOperation("获取任务信息") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:list')") |
| | | |
| | | @PostMapping("/task/stock/{code}") |
| | | public R taskToStock(@PathVariable String code) { |
| | | if (Objects.isNull(code)) { |
| | |
| | | } |
| | | |
| | | @ApiOperation("任务上架") |
| | | @PreAuthorize("hasAuthority('manager:qlyInspect:update')") |
| | | |
| | | @PostMapping("/task/public/{code}") |
| | | public R taskToLocs(@PathVariable String code) throws Exception { |
| | | if (Objects.isNull(code)) { |
| | |
| | | |
| | | @ApiOperation("一键收货") |
| | | @PostMapping("/complete/{id}") |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:update')") |
| | | |
| | | public R completeOrder(@PathVariable Long id) { |
| | | if (Objects.isNull(id)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | return mobileService.completeOrder(id, getLoginUserId()); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("获取不良托盘物料") |
| | | @PostMapping("/defect/matnrs") |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | |
| | | public R getAsnDefectItemByCode(@RequestBody Map<String, Object> map) { |
| | | if (Objects.isNull(map)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return mobileService.getItemByContainer(map,getLoginUser()); |
| | | return mobileService.getItemByContainer(map, getLoginUser()); |
| | | } |
| | | |
| | | @ApiOperation("获取订单不良物料") |
| | | @PostMapping("/defect/{trackCode}") |
| | | @PreAuthorize("hasAuthority('manager:asnOrder:list')") |
| | | |
| | | public R defectProducts(@PathVariable String trackCode) { |
| | | if (Objects.isNull(trackCode)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | |
| | | @ApiOperation("获取组拖入库信息") |
| | | @PostMapping("/pakin/info/{barcode}") |
| | | @PreAuthorize("hasAuthority('manager:waitPakin:list')") |
| | | |
| | | public R getPakinInStock(@PathVariable String barcode) { |
| | | if (Objects.isNull(barcode)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | |
| | | @ApiOperation("获取上架站点信息") |
| | | @GetMapping("/inStock/sites") |
| | | @PreAuthorize("hasAuthority('manager:deviceSite:list')") |
| | | |
| | | public R getTarSite() { |
| | | return mobileService.getDeviceSites(); |
| | | } |
| | | |
| | | @ApiOperation("获取推荐库位列表信息") |
| | | @GetMapping("/locs/list") |
| | | @PreAuthorize("hasAuthority('manager:deviceSite:list')") |
| | | |
| | | public R getLocs() { |
| | | return mobileService.getRecommondLocs(); |
| | | } |
| | | |
| | | @ApiOperation("生成任务列表") |
| | | @PostMapping("/pakin/task") |
| | | @PreAuthorize("hasAuthority('manager:deviceSite:list')") |
| | | |
| | | public R pakinToTask(@RequestBody Map<String, Object> map) { |
| | | if (Objects.isNull(map)) { |
| | | return R.error("参数不能为空!!"); |
| | |
| | | return mobileService.generateTask(map, getLoginUserId()); |
| | | } |
| | | } |
| | | |
| | |
| | | @Autowired |
| | | private PdaCheckOrderService pdaCheckOrderService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/getCheckList") |
| | | @ApiOperation("查询盘点差异单列表") |
| | | public R getCheckList(@RequestBody Map<String, String> map) { |
| | |
| | | return pdaCheckOrderService.getCheckList(map.get("code")); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/getCheckTaskItemList") |
| | | @ApiOperation("查询盘点任务列表") |
| | | public R getCheckTaskItemList(@RequestBody Map<String, String> map) { |
| | | |
| | | return pdaCheckOrderService.getCheckTaskItemList(map.get("barcode"),map.get("checkCode")); |
| | | return pdaCheckOrderService.getCheckTaskItemList(map.get("barcode"), map.get("checkCode")); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/getCheckTaskItemList2") |
| | | @ApiOperation("查询盘点任务列表,直接扫容器码") |
| | | public R getCheckTaskItemList2(@RequestBody Map<String, String> map) { |
| | |
| | | return pdaCheckOrderService.getCheckTaskItemList2(map.get("barcode")); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @GetMapping("/getCheckDiffReasonList") |
| | | @ApiOperation("查询盘点差异原因") |
| | | public R getCheckDiffReasonList() { |
| | |
| | | return pdaCheckOrderService.getCheckDiffReasonList(); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/saveCheckDiff") |
| | | @ApiOperation("保存盘点数据") |
| | | public R saveCheckDiff(@RequestBody SaveCheckDiffParams saveCheckDiffParams) { |
| | | return pdaCheckOrderService.saveCheckDiff(saveCheckDiffParams,getLoginUserId()); |
| | | return pdaCheckOrderService.saveCheckDiff(saveCheckDiffParams, getLoginUserId()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/selectAddMatnr") |
| | | @ApiOperation("查询需要添加的物料") |
| | | public R selectAddMatnr(@RequestBody Map<String, String> map) { |
| | |
| | | import com.vincent.rsf.server.api.entity.params.ContainerWaveParam; |
| | | import com.vincent.rsf.server.api.entity.params.OrderOutGeneralParam; |
| | | import com.vincent.rsf.server.api.service.PdaOutStockService; |
| | | import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; |
| | | import com.vincent.rsf.server.manager.entity.WkOrder; |
| | | import com.vincent.rsf.server.manager.entity.WkOrderItem; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | |
| | | @Autowired |
| | | private DictDataService dictDataService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @GetMapping("/outStockTaskItem/{barcode}") |
| | | @ApiOperation("快速拣货查询") |
| | | public R getOutStockTaskItem(@PathVariable String barcode) { |
| | |
| | | return pdaOutStockService.getOutStockTaskItem(barcode); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @GetMapping("/saveOutTaskSts/{barcode}") |
| | | @ApiOperation("快速拣货") |
| | | public R saveOutTaskSts(@PathVariable String barcode) { |
| | |
| | | return pdaOutStockService.saveOutTaskSts(barcode); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/getWaveList") |
| | | @ApiOperation("查询波次列表") |
| | | public R getWaveListItem(@RequestBody Map<String, String> map) { |
| | |
| | | return pdaOutStockService.getWaveListItem(map.get("barcode")); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/getContainerWaveList") |
| | | @ApiOperation("根据容器码查询波次及出库单") |
| | | public R getContainerWaveList(@RequestBody Map<String, String> map) { |
| | |
| | | return pdaOutStockService.getContainerWaveList(map); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/saveWavePick") |
| | | @ApiOperation("根据容器码查询波次及出库单") |
| | | public R saveWavePick(@RequestBody ContainerWaveParam containerWaveParam) { |
| | | |
| | | return pdaOutStockService.saveWavePick(containerWaveParam,getLoginUserId()); |
| | | return pdaOutStockService.saveWavePick(containerWaveParam, getLoginUserId()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:task:list')") |
| | | @PostMapping("/callForEmptyContainers") |
| | | @ApiOperation("呼叫空容器") |
| | | public R callForEmptyContainers(@RequestBody CallForEmptyContainersParam containerWaveParam) { |
| | | |
| | | return pdaOutStockService.callForEmptyContainers(containerWaveParam,getLoginUserId()); |
| | | return pdaOutStockService.callForEmptyContainers(containerWaveParam, getLoginUserId()); |
| | | } |
| | | |
| | | // @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | // @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/outStockItem/page") |
| | | public R page(@RequestBody JSONObject param) { |
| | | |
| | | return R.ok().add(outStockItemService.list(new LambdaQueryWrapper<>(WkOrderItem.class).eq(WkOrderItem::getDeleted, 0) |
| | | .eq(WkOrderItem::getOrderCode, param.getString("orderId")))); |
| | | return R.ok() |
| | | .add(outStockItemService.list(new LambdaQueryWrapper<>(WkOrderItem.class).eq(WkOrderItem::getDeleted, 0) |
| | | .eq(WkOrderItem::getOrderCode, param.getString("orderId")))); |
| | | } |
| | | |
| | | @PostMapping("/orderOut/getType") |
| | | public R orderOutGetType(@RequestBody OrderOutGeneralParam param) { |
| | | if (Cools.isEmpty(param)){ |
| | | if (Cools.isEmpty(param)) { |
| | | return R.ok(); |
| | | } |
| | | |
| | | List<DictData> dictData = dictDataService.list(new LambdaQueryWrapper<DictData>() |
| | | .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE) |
| | | .in(DictData::getValue, param.getType()) |
| | | ); |
| | | .in(DictData::getValue, param.getType())); |
| | | return R.ok(dictData); |
| | | } |
| | | |
| | | @RequestMapping(value = "/orderOut/list") |
| | | public R pdaPageList(@RequestParam(required = true)String orderNo, |
| | | @RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "5")Integer limit){ |
| | | public R pdaPageList(@RequestParam(required = true) String orderNo, |
| | | @RequestParam(defaultValue = "1") Integer curr, |
| | | @RequestParam(defaultValue = "5") Integer limit) { |
| | | |
| | | Page<WkOrder> page = new Page<>(curr, limit); |
| | | LambdaQueryWrapper<WkOrder> wkOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | wkOrderLambdaQueryWrapper.eq(WkOrder::getType, OrderType.ORDER_OUT.type); |
| | | wkOrderLambdaQueryWrapper.eq(!Cools.isEmpty(orderNo),WkOrder::getCode, orderNo); |
| | | wkOrderLambdaQueryWrapper.eq(!Cools.isEmpty(orderNo), WkOrder::getCode, orderNo); |
| | | Page<WkOrder> wkOrderPage = outStockService.page(page, wkOrderLambdaQueryWrapper); |
| | | return R.ok(wkOrderPage); |
| | | } |
| | | |
| | | @RequestMapping(value = "/orderOut/detlList") |
| | | public R orderOutDetlList(@RequestParam(required = true)String orderNo){ |
| | | public R orderOutDetlList(@RequestParam(required = true) String orderNo) { |
| | | |
| | | if (Cools.isEmpty(orderNo)){ |
| | | if (Cools.isEmpty(orderNo)) { |
| | | return R.error("订单号为空"); |
| | | } |
| | | |
| | | LambdaQueryWrapper<WkOrderItem> wkOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | // wkOrderLambdaQueryWrapper.eq(WkOrderItem::getType, OrderType.ORDER_OUT.type); |
| | | wkOrderLambdaQueryWrapper.eq(!Cools.isEmpty(orderNo),WkOrderItem::getOrderCode, orderNo); |
| | | // wkOrderLambdaQueryWrapper.eq(WkOrderItem::getType, OrderType.ORDER_OUT.type); |
| | | wkOrderLambdaQueryWrapper.eq(!Cools.isEmpty(orderNo), WkOrderItem::getOrderCode, orderNo); |
| | | List<WkOrderItem> list = outStockItemService.list(wkOrderLambdaQueryWrapper); |
| | | return R.ok(list); |
| | | |
| | |
| | | |
| | | @PostMapping("/orderOut/getOutLocView") |
| | | public R orderOutGetOutLocView(@RequestBody OrderOutGeneralParam param) { |
| | | //参数 param.getOrderItemId()//出库预览 |
| | | if (Cools.isEmpty(param)) { |
| | | return R.error("参数不能为空"); |
| | | } |
| | | OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam(); |
| | | orderOutTaskParam.setOrderId(param.getOrderItemId()); |
| | | orderOutTaskParam.setWaveId(param.getWaveId()); |
| | | |
| | | return outStockService.getOrderOutTaskItem(orderOutTaskParam); |
| | | |
| | | // return R.ok(); |
| | | } |
| | | // |
| | | @PostMapping("/orderOut/getOutLocRun") |
| | | public R orderOutGetOutLocRun(@RequestBody OrderOutGeneralParam param) { |
| | | //参数 param.getOrderItemId()//出库执行 |
| | | // 参数 param.getOrderItemId()//出库预览 |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | // |
| | | // @PostMapping("/orderOut/getOutLocRun") |
| | | // public R orderOutGetOutLocView(@RequestBody OrderOutGeneralParam param) { |
| | | // //参数 param.getOrderItemId()//出库执行 |
| | | // |
| | | // return R.ok(); |
| | | // } |
| | | |
| | | } |
| | |
| | | @EnableGlobalMethodSecurity(prePostEnabled = true) |
| | | public class SecurityConfig extends WebSecurityConfigurerAdapter { |
| | | |
| | | public static final String[] FILTER_PATH = new String[]{ |
| | | public static final String[] FILTER_PATH = new String[] { |
| | | "/demo/**", |
| | | "/test/**", |
| | | "/system/info", |
| | | "/tenant/list", |
| | | "/email/code", |
| | | "/pda/login", |
| | | "/pda/**", |
| | | "/erp/**", |
| | | "/base/**", |
| | | "/order/**", |