From 0696db2f8a83d32d8c00ba55967694ed1a76f4d0 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 05 五月 2025 16:07:35 +0800 Subject: [PATCH] 1. 往来企业问题修复 2. 组托问题修复 3. 库位信息问题修复 --- rsf-admin/src/page/orders/stock/OrderList.jsx | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 2 rsf-admin/src/page/basicInfo/companys/CompanysList.jsx | 27 ++-- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java | 29 +++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 15 ++- rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java | 10 +- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 18 ++- rsf-admin/src/page/locItem/LocItemList.jsx | 40 +++---- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CompanysController.java | 37 ++++--- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java | 3 rsf-admin/src/page/waitPakin/WaitPakinList.jsx | 2 rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogList.jsx | 1 rsf-admin/src/page/locItem/LocItemEdit.jsx | 41 +------ rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java | 4 rsf-admin/src/i18n/zh.js | 8 + rsf-admin/src/i18n/en.js | 4 rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx | 13 - rsf-admin/src/config/setting.js | 2 21 files changed, 148 insertions(+), 122 deletions(-) diff --git a/rsf-admin/src/config/setting.js b/rsf-admin/src/config/setting.js index 23e458a..aca143f 100644 --- a/rsf-admin/src/config/setting.js +++ b/rsf-admin/src/config/setting.js @@ -25,7 +25,7 @@ export const ABORT_SIGNAL = false; -export const DEFAULT_PAGE_SIZE = 25; +export const DEFAULT_PAGE_SIZE = 20; export const DEFAULT_ITEM_PAGE_SIZE = 10; diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index ac65feb..6181644 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -24,6 +24,10 @@ memoWrap: 'memo wrap', memo: 'memo', opt: 'operate', + supplier: 'Supplier', + customer: 'Customer', + shipper: 'Shipper', + partners: 'Strategic Partners', }, list: { empty: { diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index e68df35..9bd5378 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -24,6 +24,10 @@ memoWrap: '鏄剧ず澶囨敞', memo: '澶囨敞', opt: '鎿嶄綔', + supplier: '渚涘簲鍟�', + customer: '瀹㈡埛', + shipper: '璐т富', + partners: '鎴樼暐鍚堜綔', }, list: { empty: { @@ -906,13 +910,15 @@ }, locItem: { locId: "搴撲綅ID", - locCode: "搴撲綅缂栫爜", + locCode: "搴撲綅", orderId: "璁㈠崟ID", type: "鍗曟嵁绫诲瀷", orderItemId: "鍗曟嵁鏄庣粏ID", wkType: "涓氬姟绫诲瀷", matnrId: "鐗╂枡ID", maktx: "鐗╂枡鍚嶇О", + unit: '鍗曚綅', + anfme: '鏁伴噺', matnrCode: "鐗╂枡缂栫爜", trackCode: "璺熻釜鐮�", workQty: '鎵ц鏁�', diff --git a/rsf-admin/src/page/basicInfo/companys/CompanysList.jsx b/rsf-admin/src/page/basicInfo/companys/CompanysList.jsx index 92de173..7de39db 100644 --- a/rsf-admin/src/page/basicInfo/companys/CompanysList.jsx +++ b/rsf-admin/src/page/basicInfo/companys/CompanysList.jsx @@ -41,6 +41,7 @@ import MyExportButton from '../../components/MyExportButton'; import PageDrawer from "../../components/PageDrawer"; import DictField from "../../components/DictField"; +import DictSelect from "../../components/DictSelect"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; @@ -60,12 +61,20 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.companys.code" />, <TextInput source="name" label="table.field.companys.name" />, <TextInput source="nameEn" label="table.field.companys.nameEn" />, <TextInput source="breifCode" label="table.field.companys.breifCode" />, - <TextInput source="type" label="table.field.companys.type" />, + // <ReferenceInput source="type" reference="dictData" filter={{ dictTypeCode: 'sys_companys_type' }} label="table.field.companys.type"> + // <AutocompleteInput label="table.field.companys.type" optionValue="value"/> + // </ReferenceInput>, + <SelectInput label="table.field.companys.type" source="type" + choices={[ + { id: 'shipper', name: 'common.field.shipper' }, + { id: 'customer', name: 'common.field.customer' }, + { id: 'supplier', name: 'common.field.supplier' }, + { id: 'partners', name: 'common.field.partners' } + ]} />, <TextInput source="contact" label="table.field.companys.contact" />, <TextInput source="tel" label="table.field.companys.tel" />, <TextInput source="email" label="table.field.companys.email" />, @@ -73,7 +82,6 @@ <TextInput source="province" label="table.field.companys.province" />, <TextInput source="city" label="table.field.companys.city" />, <TextInput source="address" label="table.field.companys.address" />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" @@ -88,7 +96,6 @@ const CompanysList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); @@ -104,7 +111,7 @@ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.companys"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + empty={false} filters={filters} sort={{ field: "create_time", order: "desc" }} actions={( @@ -124,7 +131,6 @@ omit={['id', 'createTime', 'createBy', 'memo']} > <NumberField source="id" /> - {/* <TextField source="code" label="table.field.companys.code" /> */} <TextField source="name" label="table.field.companys.name" /> <TextField source="nameEn" label="table.field.companys.nameEn" /> <TextField source="breifCode" label="table.field.companys.breifCode" /> @@ -136,14 +142,9 @@ <TextField source="province" label="table.field.companys.province" /> <TextField source="city" label="table.field.companys.city" /> <TextField source="address" label="table.field.companys.address" /> - - <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> + <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> - <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> + <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> <BooleanField source="statusBool" label="common.field.status" sortable={false} /> <TextField source="memo" label="common.field.memo" sortable={false} /> diff --git a/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogList.jsx b/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogList.jsx index ff30723..53c8898 100644 --- a/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogList.jsx +++ b/rsf-admin/src/page/histories/waitPakinLog/WaitPakinLogList.jsx @@ -123,7 +123,6 @@ <TextField source="barcode" label="table.field.waitPakinLog.barcode" /> <NumberField source="anfme" label="table.field.waitPakinLog.anfme" /> <TextField source="ioStatus$" label="table.field.waitPakinLog.ioStatus" sortable={false} /> - <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> <TextField source="nickname" /> </ReferenceField> diff --git a/rsf-admin/src/page/locItem/LocItemEdit.jsx b/rsf-admin/src/page/locItem/LocItemEdit.jsx index f9d7aa1..120f850 100644 --- a/rsf-admin/src/page/locItem/LocItemEdit.jsx +++ b/rsf-admin/src/page/locItem/LocItemEdit.jsx @@ -33,9 +33,9 @@ const { getValues } = useFormContext(); return ( - <Toolbar sx={{ justifyContent: 'space-between' }}> + <Toolbar sx={{ justifyContent: 'end' }}> <SaveButton /> - <DeleteButton mutationMode="optimistic" /> + {/* <DeleteButton mutationMode="optimistic" /> */} </Toolbar> ) } @@ -58,8 +58,8 @@ defaultValues={{}} // validate={(values) => { }} > - <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> - <Grid item xs={12} md={8}> + <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}> + <Grid item xs={14} md={10}> <Typography variant="h6" gutterBottom> {translate('common.edit.title.main')} </Typography> @@ -69,24 +69,18 @@ source="locId" autoFocus /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.locCode" source="locCode" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <NumberInput label="table.field.locItem.orderId" source="orderId" /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.type" - source="type" + source="type$" parse={v => v} /> </Stack> @@ -95,14 +89,10 @@ label="table.field.locItem.orderItemId" source="orderItemId" /> - </Stack> - <Stack direction='row' gap={2}> <NumberInput label="table.field.locItem.wkType" source="wkType" /> - </Stack> - <Stack direction='row' gap={2}> <NumberInput label="table.field.locItem.matnrId" source="matnrId" @@ -114,22 +104,17 @@ source="maktx" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> + <TextInput label="table.field.locItem.matnrCode" source="matnrCode" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.trackCode" source="trackCode" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.unit" source="unit" @@ -141,20 +126,14 @@ label="table.field.locItem.anfme" source="anfme" /> - </Stack> - <Stack direction='row' gap={2}> <NumberInput label="table.field.locItem.qty" source="qty" /> - </Stack> - <Stack direction='row' gap={2}> <NumberInput label="table.field.locItem.workQty" source="workQty" /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.batch" source="batch" @@ -167,22 +146,16 @@ source="splrBatch" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.spec" source="spec" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.model" source="model" parse={v => v} /> - </Stack> - <Stack direction='row' gap={2}> <TextInput label="table.field.locItem.fieldsIndex" source="fieldsIndex" @@ -191,7 +164,7 @@ </Stack> </Grid> - <Grid item xs={12} md={4}> + <Grid item xs={10} md={2}> <Typography variant="h6" gutterBottom> {translate('common.edit.title.common')} </Typography> diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx index 95821c1..7b4aa44 100644 --- a/rsf-admin/src/page/locItem/LocItemList.jsx +++ b/rsf-admin/src/page/locItem/LocItemList.jsx @@ -54,15 +54,14 @@ '& .column-name': { }, '& .opt': { - width: 200 + width: 100 }, })); const filters = [ <SearchInput source="condition" alwaysOn />, - <DateInput label='common.time.after' source="timeStart" alwaysOn />, - <DateInput label='common.time.before' source="timeEnd" alwaysOn />, - + <DateInput label='common.time.after' source="timeStart" />, + <DateInput label='common.time.before' source="timeEnd" />, <NumberInput source="locId" label="table.field.locItem.locId" />, <TextInput source="locCode" label="table.field.locItem.locCode" />, <NumberInput source="orderId" label="table.field.locItem.orderId" />, @@ -82,7 +81,6 @@ <TextInput source="spec" label="table.field.locItem.spec" />, <TextInput source="model" label="table.field.locItem.model" />, <TextInput source="fieldsIndex" label="table.field.locItem.fieldsIndex" />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" @@ -113,15 +111,15 @@ marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.locItem"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + empty={false} filters={filters} sort={{ field: "create_time", order: "desc" }} actions={( <TopToolbar> <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} <SelectColumnsButton preferenceKey='locItem' /> - <MyExportButton /> + {/* <MyExportButton /> */} </TopToolbar> )} perPage={DEFAULT_PAGE_SIZE} @@ -129,43 +127,39 @@ <StyledDatagrid preferenceKey='locItem' bulkActionButtons={false} - rowClick={(id, resource, record) => false} + rowClick={false} expand={() => <LocItemPanel />} expandSingle={true} - omit={['id', 'createTime','locId','workQty','qty', 'createBy', 'memo','fieldsIndex','opt']} + omit={['id', 'createTime','locId','orderId', 'orderItemId', 'matnrId', 'splrBatch','workQty','qty', 'createBy', 'memo','fieldsIndex']} > <NumberField source="id" /> <NumberField source="locId" label="table.field.locItem.locId" /> <TextField source="locCode" label="table.field.locItem.locCode" /> <NumberField source="orderId" label="table.field.locItem.orderId" /> - <TextField source="type" label="table.field.locItem.type" /> + <TextField source="type$" label="table.field.locItem.type" /> <NumberField source="orderItemId" label="table.field.locItem.orderItemId" /> - <NumberField source="wkType" label="table.field.locItem.wkType" /> + <NumberField source="wkType$" label="table.field.locItem.wkType" /> <NumberField source="matnrId" label="table.field.locItem.matnrId" /> - <TextField source="maktx" label="table.field.locItem.maktx" /> <TextField source="matnrCode" label="table.field.locItem.matnrCode" /> + <TextField source="maktx" label="table.field.locItem.maktx" /> + <TextField source="spec" label="table.field.locItem.spec" /> + <TextField source="model" label="table.field.locItem.model" /> + <TextField source="batch" label="table.field.locItem.batch" /> <TextField source="trackCode" label="table.field.locItem.trackCode" /> <TextField source="unit" label="table.field.locItem.unit" /> <NumberField source="anfme" label="table.field.locItem.anfme" /> - <TextField source="batch" label="table.field.locItem.batch" /> <TextField source="splrBatch" label="table.field.locItem.splrBatch" /> - <TextField source="spec" label="table.field.locItem.spec" /> - <TextField source="model" label="table.field.locItem.model" /> <TextField source="fieldsIndex" label="table.field.locItem.fieldsIndex" /> - <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> + <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> - <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField> + <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> <BooleanField source="statusBool" label="common.field.status" sortable={false} /> <TextField source="memo" label="common.field.memo" sortable={false} /> <WrapperField cellClassName="opt" label="common.field.opt"> <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} </WrapperField> </StyledDatagrid> </List> diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx index e6c2bec..796ed9e 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx @@ -246,34 +246,29 @@ required /> </Grid> - <Grid item md={3}> + <Grid item md={2}> <TextField label={translate("table.field.asnOrder.poCode")} value={formData.poCode} + variant="filled" onChange={(e) => handleChange(e.target.value, 'poCode')} /> </Grid> - <Grid item md={3}> + <Grid item md={2}> <TextField label={translate("table.field.asnOrder.logisNo")} value={formData.logisNo} + variant="filled" onChange={(e) => handleChange(e.target.value, 'logisNo')} /> </Grid> - <Grid item md={3}> - {/* <TextField - label={translate("table.field.asnOrder.arrTime")} - value={formData.arrTime} - onChange={(e) => handleChange(e.target.value, 'arrTime')} - /> */} <DateInput source="arrTime" label="table.field.asnOrder.arrTime" value={formData.arrTime} onChange={(e) => handleChange(e.target.value, 'arrTime')} /> - </Grid> </Grid> </Form> diff --git a/rsf-admin/src/page/orders/stock/OrderList.jsx b/rsf-admin/src/page/orders/stock/OrderList.jsx index 192b56a..0f498e6 100644 --- a/rsf-admin/src/page/orders/stock/OrderList.jsx +++ b/rsf-admin/src/page/orders/stock/OrderList.jsx @@ -116,18 +116,18 @@ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} rowClick='edit' expandSingle={true} - omit={['id', 'createTime', 'createBy', 'memo']} + omit={['id', 'createTime','sourceId', 'createBy', 'memo']} > <NumberField source="id" /> <TextField source="code" label="table.field.stock.code" /> <TextField source="sourceCode" label="table.field.stock.sourceCode" /> <NumberField source="sourceId" label="table.field.stock.sourceId" /> - <TextField source="type" label="table.field.stock.type" /> - <TextField source="wkType" label="table.field.stock.wkType" /> + <TextField source="type$" label="table.field.stock.type" /> + <TextField source="wkType$" label="table.field.stock.wkType" /> <NumberField source="anfme" label="table.field.stock.anfme" /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> - <TextField source="createBy" label="common.field.createBy" /> + <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> <BooleanField source="statusBool" label="common.field.status" sortable={false} /> <TextField source="memo" label="common.field.memo" sortable={false} /> diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx index 0d519b2..362885e 100644 --- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx +++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx @@ -130,7 +130,7 @@ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.waitPakin"} - empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + empty={false} filters={filters} sort={{ field: "create_time", order: "desc" }} actions={( diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java index c18bf62..1b59c9a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java @@ -123,12 +123,12 @@ @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") @ApiOperation("鑾峰彇璁㈠崟鐗╂枡鏄庣粏") - @GetMapping("/asnOrderItem/trackCode/{code}") - public R getItemByTrackCode(@PathVariable String code) { - if (StringUtils.isBlank(code)) { - return R.error("缂栫爜涓嶈兘涓虹┖锛侊紒"); + @PostMapping("/asnOrderItem/trackCode") + public R getItemByTrackCode(@RequestBody Map<String, Object> params) { + if (Objects.isNull(params)) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return mobileService.getDeltByCode(code); + return mobileService.getDeltByCode(params); } @PreAuthorize("hasAuthority('manager:asnOrderItem:list')") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java index 121003c..4543e66 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java @@ -36,7 +36,7 @@ List<Fields> getDynamicFields(); - R getDeltByCode(String code); + R getDeltByCode(Map<String, Object> params); WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 568ac34..beae2ad 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -217,7 +217,6 @@ } List<ReceiptDetlsDto> receipts = receiptParam.getReceipts(); - List<WarehouseAreasItem> allOrders = new ArrayList<>(); Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum(); @@ -267,7 +266,7 @@ } Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty(); orderItem.setQty(itemRcptQty) - .setSplrBatch(dto.getSplrBatch()) +// .setSplrBatch(dto.getSplrBatch()) .setUpdateBy(loginUserId) .setStockUnit(dto.getStockUnit()) .setProdTime(dto.getProdTime()); @@ -421,13 +420,19 @@ * @time 2025/4/7 16:58 */ @Override - public R getDeltByCode(String code) { + public R getDeltByCode(Map<String, Object> params ) { + String code = params.get("code").toString(); + String batch = null; + if (!Objects.isNull(params.get("batch"))) { + batch = params.get("batch").toString(); + } //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑 LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>() .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch,unit, stock_unit, qty, work_qty, matnr_code, matnr_id, maktx").lambda() - .eq(WarehouseAreasItem::getTrackCode, code) + .eq(StringUtils.isNotBlank(code), WarehouseAreasItem::getTrackCode, code) + .eq(StringUtils.isNotBlank(batch), WarehouseAreasItem::getSplrBatch, batch) .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId); - return R.ok(warehouseAreasItemService.getOne(queryWrapper)); + return R.ok(warehouseAreasItemService.getOne(queryWrapper, false)); } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CompanysController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CompanysController.java index 23f6804..6b4d172 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CompanysController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CompanysController.java @@ -69,12 +69,18 @@ throw new CoolException("浼佷笟绫诲瀷涓嶈兘涓虹┖锛侊紒"); } - List<Companys> warehouses = companysService.list(new LambdaQueryWrapper<Companys>().eq(Companys::getName, companys.getName())); + List<Companys> warehouses = companysService.list(new LambdaQueryWrapper<Companys>() + .eq(Companys::getName, companys.getName()) + .eq(Companys::getType, companys.getType()) + .eq(Companys::getBreifCode, companys.getBreifCode())); if (!warehouses.isEmpty()) { - throw new CoolException("浼佷笟鍚嶇О宸插瓨鍦紒锛�"); + throw new CoolException("浼佷笟宸插瓨鍦紒锛�"); } - if (!companysService.list(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, companys.getBreifCode())).isEmpty()) { - throw new CoolException("缂栫爜宸插瓨鍦紒锛�"); + if (!companysService.list(new LambdaQueryWrapper<Companys>() + .eq(Companys::getType, companys.getType()) + .eq(Companys::getName, companys.getName()) + .eq(Companys::getCode, companys.getBreifCode())).isEmpty()) { + throw new CoolException("浼佷笟缂栫爜閲嶅锛侊紒"); } companys.setCreateBy(getLoginUserId()); @@ -99,18 +105,19 @@ if (Objects.isNull(companys.getType())) { throw new CoolException("绫诲瀷涓嶈兘涓虹┖锛侊紒"); } - Companys companys1 = companysService.getById(companys.getId()); - if (!companys.getName().equals(companys1.getName())) { - List<Companys> areasList = companysService.list(new LambdaQueryWrapper<Companys>().eq(Companys::getName, companys.getName())); - if (!areasList.isEmpty()) { - throw new CoolException("浼佷笟鍚嶅凡瀛樺湪锛侊紒"); - } +// Companys companys1 = companysService.getById(companys.getId()); + List<Companys> warehouses = companysService.list(new LambdaQueryWrapper<Companys>() + .eq(Companys::getName, companys.getName()) + .eq(Companys::getType, companys.getType()) + .eq(Companys::getBreifCode, companys.getBreifCode())); + if (!warehouses.isEmpty()) { + throw new CoolException("浼佷笟宸插瓨鍦紒锛�"); } - if (!companys.getBreifCode().equals(companys1.getBreifCode())) { - List<Companys> areasList = companysService.list(new LambdaQueryWrapper<Companys>().eq(Companys::getBreifCode, companys.getBreifCode())); - if (!areasList.isEmpty()) { - throw new CoolException("缂栫爜宸插瓨鍦紒锛�"); - } + if (!companysService.list(new LambdaQueryWrapper<Companys>() + .eq(Companys::getType, companys.getType()) + .eq(Companys::getName, companys.getName()) + .eq(Companys::getCode, companys.getBreifCode())).isEmpty()) { + throw new CoolException("浼佷笟缂栫爜閲嶅锛侊紒"); } if (!companysService.updateById(companys)) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java index 9e83b73..9facf84 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/WaitPakinParam.java @@ -19,6 +19,9 @@ @ApiModelProperty("璺熻釜鐮�") private List<PakinItem> items; + @ApiModelProperty("鎵规") + private String batch; + @ApiModelProperty("缁勬嫋绫诲瀷{null: 缁勬嫋, defective: 涓嶈壇鍝亇") private String type; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java index 46aaaef..3698344 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java @@ -213,7 +213,9 @@ return ""; } DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); - DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE).eq(DictData::getValue, this.type)); + DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>() + .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE) + .eq(DictData::getValue, this.type)); if (Objects.isNull(dictData)) { return null; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java index 84560fd..3dfa6cf 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java @@ -5,7 +5,11 @@ import java.text.SimpleDateFormat; import java.util.Date; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.annotation.JsonFormat; +import com.vincent.rsf.server.system.constant.DictTypeCode; +import com.vincent.rsf.server.system.entity.DictData; +import com.vincent.rsf.server.system.service.DictDataService; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; @@ -21,6 +25,7 @@ import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Date; +import java.util.Objects; @Data @Accessors(chain = true) @@ -262,6 +267,30 @@ // null // 澶囨敞 // ); + public String getType$(){ + if (Cools.isEmpty(this.type)){ + return ""; + } + DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); + DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE).eq(DictData::getValue, this.type)); + if (Objects.isNull(dictData)) { + return null; + } + return dictData.getLabel(); + } + + public String getWkType$(){ + if (Cools.isEmpty(this.wkType)){ + return ""; + } + DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); + DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE).eq(DictData::getValue, this.wkType)); + if (Objects.isNull(dictData)) { + return null; + } + return dictData.getLabel(); + } + public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java index cc7a483..e76b367 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinLog.java @@ -161,6 +161,10 @@ return "寰呭叆搴�"; case 1: return " 鍏ュ簱涓�"; + case 2: + return "浠诲姟鎵ц涓�"; + case 3: + return "浠诲姟瀹屾垚"; default: return String.valueOf(this.ioStatus); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java index 7781d17..5d43cc8 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java @@ -12,7 +12,6 @@ //璐ㄦ鐘舵�� ASN_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"), ASN_EXCE_STATUS_EXCE_ING("1", "鎵ц涓�"), - ASN_EXCE_STATUS_RECEIPT_DONE("2", "鏀惰揣瀹屾垚"), ASN_EXCE_STATUS_TASK_DONE("3", "宸插畬鎴�"), ASN_EXCE_STATUS_TASK_CANCEL("4", "鍙栨秷"), diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java index 444690f..a8be86f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java @@ -93,11 +93,6 @@ throw new CoolException("鏈壘鍒版墍灞炲簱鍖轰俊鎭�"); } - /**鑾峰彇搴撲綅*/ - String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId()); - if (Cools.isEmpty(targetLoc)) { - throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅"); - } /**鑾峰彇缁勬嫋*/ List<Long> ids = waitPakin.getWaitPakins().stream().map(WaitPakin::getId).collect(Collectors.toList()); List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>() @@ -107,6 +102,12 @@ throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�"); } waitPakins.forEach(pakin -> { + /**鑾峰彇搴撲綅*/ + String targetLoc = LocManageUtil.getTargetLoc(warehouseArea.getId()); + if (Cools.isEmpty(targetLoc)) { + throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅"); + } + List<TaskItem> taskItems = new ArrayList<>(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); if (StringUtils.isBlank(ruleCode)) { @@ -256,7 +257,7 @@ * @time 2025/4/30 16:32 */ @Transactional(rollbackFor = Exception.class) - private void removeReceiptStock(WaitPakinItem pakinItem) { + public void removeReceiptStock(WaitPakinItem pakinItem) { WarehouseAreasItem itemServiceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() .eq(WarehouseAreasItem::getTrackCode, pakinItem.getTrackCode()) .eq(WarehouseAreasItem::getSplrBatch, pakinItem.getBatch())); @@ -302,7 +303,10 @@ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()), false); LocItem item = new LocItem(); BeanUtils.copyProperties(taskItem, item); - item.setLocCode(loc.getCode()).setId(null).setLocId(loc.getId()).setType(taskItem.getOrderType()); + item.setLocCode(loc.getCode()).setId(null) + .setLocId(loc.getId()) + .setWkType(taskItem.getWkType()) + .setType(taskItem.getOrderType()); locItems.add(item); }); if (!locItemService.saveBatch(locItems)) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index a04a951..d236929 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -151,6 +151,7 @@ .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, unit, stock_unit, work_qty, matnr_code, matnr_id, maktx") .lambda() .in(WarehouseAreasItem::getTrackCode, tracks) + .eq(StringUtils.isNotBlank(waitPakin.getBatch()), WarehouseAreasItem::getSplrBatch, waitPakin.getBatch()) .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getTrackCode); List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper); -- Gitblit v1.9.1