From dfe8dff347916be46691fc5d956c45880c4446de Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期一, 10 三月 2025 11:44:52 +0800 Subject: [PATCH] fix:规则子项 --- rsf-server/src/main/java/asnOrder.sql | 1 rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java | 6 rsf-admin/src/page/system/serialRule/index.jsx | 0 rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 46 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java | 6 rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx | 8 rsf-admin/src/i18n/en.js | 84 +++++ rsf-admin/src/page/ResourceContent.js | 22 + rsf-server/src/main/java/purchase.sql | 14 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 19 + rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java | 11 rsf-admin/src/page/system/serialRuleItem/index.jsx | 0 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectParams.java | 36 ++ rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx | 12 rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java | 3 rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java | 2 rsf-admin/src/page/basicInfo/loc/LocEdit.jsx | 8 rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java | 46 ++ rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx | 0 rsf-admin/src/page/system/serialRule/SerialRuleEdit.jsx | 8 rsf-admin/src/page/system/serialRule/SerialRulePanel.jsx | 2 rsf-server/src/main/java/asnOrderItem.sql | 9 rsf-server/src/main/java/com/vincent/rsf/server/common/config/SysStockProperties.java | 48 +++ rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 16 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/PurchaseMapper.java | 6 rsf-admin/src/page/basicInfo/loc/LocCreate.jsx | 6 rsf-admin/src/i18n/zh.js | 69 ++++ rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx | 6 rsf-common/src/main/java/com/vincent/rsf/common/domain/CommonReponse.java | 31 + rsf-server/src/main/resources/application-dev.yml | 30 + rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx | 6 rsf-admin/src/page/system/serialRule/SerialRuleList.jsx | 0 rsf-admin/src/page/basicInfo/loc/index.jsx | 0 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java | 147 ++++++++ rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java | 8 rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx | 0 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java | 3 rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml | 23 + rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx | 8 rsf-admin/src/page/basicInfo/loc/LocList.jsx | 10 rsf-admin/src/page/system/dicts/dictType/DictTypePanel.jsx | 2 rsf-admin/src/page/system/dicts/dictData/index.jsx | 0 rsf-admin/src/page/system/dicts/dictType/index.jsx | 0 rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx | 0 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectItem.java | 38 ++ rsf-server/src/main/resources/application-prod.yml | 5 rsf-server/src/main/java/com/vincent/rsf/server/api/config/RestTemplateConfig.java | 22 + rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/PoItemsDto.java | 43 ++ rsf-server/src/main/java/purchaseItem.sql | 18 rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx | 10 rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx | 2 rsf-admin/src/page/basicInfo/loc/LocPanel.jsx | 2 56 files changed, 825 insertions(+), 99 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 052d395..e2a33b9 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -135,6 +135,10 @@ companys: 'Companys', serialRuleItem: 'SerialRuleItem', serialRule: 'SerialRule', + asnOrder: 'AsnOrder', + asnOrderItem: 'AsnOrderItem', + purchase: 'Purchase', + purchaseItem: 'PurchaseItem', whMat: 'Warehouse Mat', }, table: { @@ -396,7 +400,85 @@ size: "size", minWeight: "minWeight", maxWeight: "maxWeight", - } + }, + asnOrder: { + code: "Code", + poCode: "poCode", + poId: "poId", + type: "Type", + wkType: "wkType", + anfme: "anfme", + qty: "qty", + logisNo: "logisNo", + arrTime: "Arrived", + rleStatus: "Release", + ntyStatus: "Notify", + }, + asnOrderItem: { + asnId: "asnId", + asnCode: "asnCode", + poDetlId: "poDetlId", + poDetlCode: "poDetlCode", + matnrId: "matnrId", + matnk: "matnk", + anfme: "anfme", + stockUnit: "stockUnit", + purQty: "purQty", + purUnit: "purUnit", + qty: "qty", + splrCode: "splrCode", + splrName: "splrName", + qrcode: "qrcode", + barcode: "barcode", + packName: "packName", + ntyStatus: "ntyStatus", + }, + purchaseItem: { + purchaseId: "purchaseId", + erpItemId: "erpItemId", + matnrCode: "matnrCode", + matnrName: "matnrName", + unit: "unit", + anfme: "anfme", + qty: "qty", + nromQty: "nromQty", + asnQty: "asnQty", + printQty: "printQty", + splrName: "splrName", + splrCode: "splrCode", + splrBatch: "splrBatch", + }, + purchase: { + code: "code", + erpId: "erpId", + type: "type", + wkType: "wkType", + source: "source", + preArr: "preArr", + anfme: "anfme", + qty: "qty", + workQty: "workQty", + channel: "channel", + erpCode: "erpCode", + project: "project", + startTime: "startTime", + endTime: "endTime", + }, + purchaseItem: { + purchaseId: "purchaseId", + erpItemId: "erpItemId", + matnrCode: "matnrCode", + matnrName: "matnrName", + unit: "unit", + anfme: "anfme", + qty: "qty", + nromQty: "nromQty", + asnQty: "asnQty", + printQty: "printQty", + splrName: "splrName", + splrCode: "splrCode", + splrBatch: "splrBatch", + }, } }, page: { diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 4711164..a5b8c10 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -134,6 +134,10 @@ companys: '寰�鏉ヤ紒涓�', serialRuleItem: '缂栫爜瑙勫垯瀛愯〃', serialRule: '缂栫爜瑙勫垯', + asnOrder: '鏀惰揣閫氱煡鍗�', + asnOrderItem: '鏀惰揣鏄庣粏', + purchase: 'PO鍗�', + purchaseItem: 'PO鍗曟槑缁�', whMat: '搴撳尯鐗╂枡鍏崇郴', }, table: { @@ -396,7 +400,70 @@ size: "灏哄", minWeight: "鏈�灏忛噸閲�", maxWeight: "鏈�澶ч噸閲�", - } + }, + asnOrder: { + code: "缂栫爜", + poCode: "PO缂栫爜", + poId: "PO鏍囪瘑", + type: "鍗曟嵁绫诲瀷", + wkType: "涓氬姟绫诲瀷", + anfme: "鏁伴噺", + qty: "宸插畬鎴愭暟閲�", + logisNo: "logisNo", + arrTime: "棰勮鍒拌揪鏃堕棿", + rleStatus: "閲婃斁鐘舵��", + ntyStatus: "璐ㄦ涓婃姤鐘舵��", + }, + asnOrderItem: { + asnId: "涓诲崟鏍囪瘑", + asnCode: "涓诲崟缂栫爜", + poDetlId: "PO鍗曟爣璇�", + poDetlCode: "PO鍗曠紪鐮�", + matnrId: "鐗╂枡鏍囪瘑", + matnk: "鐗╂枡鍚嶇О", + anfme: "鏁伴噺", + stockUnit: "搴撳瓨鍗曚綅", + purQty: "閲囪喘鏁伴噺", + purUnit: "閲囪喘鍗曚綅", + qty: "宸插畬鎴愭暟閲�", + splrCode: "渚涘簲鍟嗙紪鐮�", + splrName: "渚涘簲鍟嗗悕绉�", + qrcode: "浜岀淮鐮�", + barcode: "鏉″舰鐮�", + packName: "鍖呰鍚嶇О", + ntyStatus: "鎶ユ鐘舵��", + }, + purchase: { + code: "缂栫爜", + erpId: "erp鏍囪瘑", + type: "鍗曟嵁绫诲瀷", + wkType: "涓氬姟绫诲瀷", + source: "鏉ユ簮", + preArr: "棰勮鍒拌揪", + anfme: "鏁伴噺", + qty: "宸插畬鎴愭暟閲�", + workQty: "鎵ц涓暟閲�", + channel: "鏀惰揣閫氶亾", + erpCode: "Erp缂栫爜", + project: "椤圭洰鍚嶇О", + startTime: "寮�濮嬫椂闂�", + endTime: "缁撴潫鏃堕棿", + }, + purchaseItem: { + purchaseId: "PO涓诲崟鏍囪瘑", + erpItemId: "erp鏄庣粏鏍囪瘑", + matnrCode: "鐗╂枡缂栫爜", + matnrName: "鐗╂枡鍚嶇О", + unit: "璁¢噺鍗曚綅", + anfme: "鏁伴噺", + qty: "宸插畬鎴�", + nromQty: "鏍囧寘鏁伴噺", + asnQty: "鍗曟嵁鏁伴噺", + printQty: "鎵撳嵃鏁伴噺", + splrName: "渚涘簲鍟嗗悕绉�", + splrCode: "渚涘簲鍟嗙紪鐮�", + splrBatch: "渚涘簲鍟嗘壒娆�", + }, } }, page: { diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js index d8753d0..448aec3 100644 --- a/rsf-admin/src/page/ResourceContent.js +++ b/rsf-admin/src/page/ResourceContent.js @@ -17,16 +17,20 @@ import matnrGroup from './basicInfo/matnrGroup'; import warehouse from './basicInfo/warehouse'; import warehouseAreas from './warehouseAreas'; -import loc from './loc'; +import loc from './basicInfo/loc'; import container from './container'; import contract from './contract'; import qlyInspect from './qlyInspect'; -import dictType from './dictType'; -import dictData from './dictData'; +import dictType from './system/dicts/dictType'; +import dictData from './system/dicts/dictData'; import companys from './basicInfo/companys'; -import serialRuleItem from './serialRuleItem'; -import serialRule from './serialRule'; +import serialRuleItem from './system/serialRuleItem'; +import serialRule from './system/serialRule'; import whMat from './basicInfo/whMat'; +import asnOrder from './asnOrder'; +import asnOrderItem from './asnOrderItem'; +import purchaseItem from './purchaseItem'; +import purchase from './purchase'; const ResourceContent = (node) => { @@ -77,6 +81,14 @@ return serialRule; case 'whMat': return whMat; + case 'asnOrder': + return asnOrder; + case 'asnOrderItem': + return asnOrderItem; + case 'purchaseItem': + return purchaseItem; + case 'purchase': + return purchase; default: return { list: ListGuesser, diff --git a/rsf-admin/src/page/loc/LocCreate.jsx b/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx similarity index 97% rename from rsf-admin/src/page/loc/LocCreate.jsx rename to rsf-admin/src/page/basicInfo/loc/LocCreate.jsx index 472ecfd..831412b 100644 --- a/rsf-admin/src/page/loc/LocCreate.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; +import DialogCloseButton from "../../components/DialogCloseButton"; +import StatusSelectInput from "../../components/StatusSelectInput"; +import MemoInput from "../../components/MemoInput"; const LocCreate = (props) => { const { open, setOpen } = props; diff --git a/rsf-admin/src/page/loc/LocEdit.jsx b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx similarity index 97% rename from rsf-admin/src/page/loc/LocEdit.jsx rename to rsf-admin/src/page/basicInfo/loc/LocEdit.jsx index 2b04603..c8c7fcb 100644 --- a/rsf-admin/src/page/loc/LocEdit.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx @@ -24,10 +24,10 @@ import { Stack, Grid, Box, Typography } from '@mui/material'; import * as Common from '@/utils/common'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; +import EditBaseAside from "../../components/EditBaseAside"; +import CustomerTopToolBar from "../../components/EditTopToolBar"; +import MemoInput from "../../components/MemoInput"; +import StatusSelectInput from "../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); diff --git a/rsf-admin/src/page/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx similarity index 96% rename from rsf-admin/src/page/loc/LocList.jsx rename to rsf-admin/src/page/basicInfo/loc/LocList.jsx index 1392d7d..1980da5 100644 --- a/rsf-admin/src/page/loc/LocList.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx @@ -36,11 +36,11 @@ import { styled } from '@mui/material/styles'; import LocCreate from "./LocCreate"; import LocPanel from "./LocPanel"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import MyField from "../components/MyField"; +import EmptyData from "../../components/EmptyData"; +import MyCreateButton from "../../components/MyCreateButton"; +import MyExportButton from '../../components/MyExportButton'; +import PageDrawer from "../../components/PageDrawer"; +import MyField from "../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; diff --git a/rsf-admin/src/page/loc/LocPanel.jsx b/rsf-admin/src/page/basicInfo/loc/LocPanel.jsx similarity index 98% rename from rsf-admin/src/page/loc/LocPanel.jsx rename to rsf-admin/src/page/basicInfo/loc/LocPanel.jsx index 2a429ec..323cfb7 100644 --- a/rsf-admin/src/page/loc/LocPanel.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocPanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; +import PanelTypography from "../../components/PanelTypography"; import * as Common from '@/utils/common' const LocPanel = () => { diff --git a/rsf-admin/src/page/loc/index.jsx b/rsf-admin/src/page/basicInfo/loc/index.jsx similarity index 100% rename from rsf-admin/src/page/loc/index.jsx rename to rsf-admin/src/page/basicInfo/loc/index.jsx diff --git a/rsf-admin/src/page/dictData/DictDataCreate.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx similarity index 96% rename from rsf-admin/src/page/dictData/DictDataCreate.jsx rename to rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx index 2c609cc..cc98111 100644 --- a/rsf-admin/src/page/dictData/DictDataCreate.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; +import DialogCloseButton from "../../../components/DialogCloseButton"; +import StatusSelectInput from "../../../components/StatusSelectInput"; +import MemoInput from "../../../components/MemoInput"; const DictDataCreate = (props) => { const { open, setOpen } = props; diff --git a/rsf-admin/src/page/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx similarity index 94% rename from rsf-admin/src/page/dictData/DictDataEdit.jsx rename to rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx index 6eed851..6190953 100644 --- a/rsf-admin/src/page/dictData/DictDataEdit.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx @@ -24,10 +24,10 @@ import { Stack, Grid, Box, Typography } from '@mui/material'; import * as Common from '@/utils/common'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; +import EditBaseAside from "../../../components/EditBaseAside"; +import CustomerTopToolBar from "../../../components/EditTopToolBar"; +import MemoInput from "../../../components/MemoInput"; +import StatusSelectInput from "../../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); diff --git a/rsf-admin/src/page/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx similarity index 94% rename from rsf-admin/src/page/dictData/DictDataList.jsx rename to rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx index 0770711..65ea973 100644 --- a/rsf-admin/src/page/dictData/DictDataList.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx @@ -36,14 +36,14 @@ import { styled } from '@mui/material/styles'; import DictDataCreate from "./DictDataCreate"; import DictDataPanel from "./DictDataPanel"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import MyField from "../components/MyField"; +import EmptyData from "../../../components/EmptyData"; +import MyCreateButton from "../../../components/MyCreateButton"; +import MyExportButton from '../../../components/MyExportButton'; +import PageDrawer from "../../../components/PageDrawer"; +import MyField from "../../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; -import CustomerTopToolBar from "../components/EditTopToolBar"; +import CustomerTopToolBar from "../../../components/EditTopToolBar"; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ diff --git a/rsf-admin/src/page/dictData/DictDataPanel.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx similarity index 98% rename from rsf-admin/src/page/dictData/DictDataPanel.jsx rename to rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx index 557a79c..1f38976 100644 --- a/rsf-admin/src/page/dictData/DictDataPanel.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; +import PanelTypography from "../../../components/PanelTypography"; import * as Common from '@/utils/common' const DictDataPanel = () => { diff --git a/rsf-admin/src/page/dictData/index.jsx b/rsf-admin/src/page/system/dicts/dictData/index.jsx similarity index 100% rename from rsf-admin/src/page/dictData/index.jsx rename to rsf-admin/src/page/system/dicts/dictData/index.jsx diff --git a/rsf-admin/src/page/dictType/DictTypeCreate.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx similarity index 95% rename from rsf-admin/src/page/dictType/DictTypeCreate.jsx rename to rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx index d652cba..9c17b03 100644 --- a/rsf-admin/src/page/dictType/DictTypeCreate.jsx +++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; +import DialogCloseButton from "../../../components/DialogCloseButton"; +import StatusSelectInput from "../../../components/StatusSelectInput"; +import MemoInput from "../../../components/MemoInput"; const DictTypeCreate = (props) => { const { open, setOpen } = props; diff --git a/rsf-admin/src/page/dictType/DictTypeEdit.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx similarity index 92% rename from rsf-admin/src/page/dictType/DictTypeEdit.jsx rename to rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx index 96ace70..6155c7b 100644 --- a/rsf-admin/src/page/dictType/DictTypeEdit.jsx +++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx @@ -24,10 +24,10 @@ import { Stack, Grid, Box, Typography } from '@mui/material'; import * as Common from '@/utils/common'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; +import EditBaseAside from "../../../components/EditBaseAside"; +import CustomerTopToolBar from "../../../components/EditTopToolBar"; +import MemoInput from "../../../components/MemoInput"; +import StatusSelectInput from "../../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); diff --git a/rsf-admin/src/page/dictType/DictTypeList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx similarity index 94% rename from rsf-admin/src/page/dictType/DictTypeList.jsx rename to rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx index dc30eae..4fc1553 100644 --- a/rsf-admin/src/page/dictType/DictTypeList.jsx +++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx @@ -36,11 +36,11 @@ import { styled } from '@mui/material/styles'; import DictTypeCreate from "./DictTypeCreate"; import DictTypePanel from "./DictTypePanel"; -import EmptyData from "../components/EmptyData"; -import MyCreateButton from "../components/MyCreateButton"; -import MyExportButton from '../components/MyExportButton'; -import PageDrawer from "../components/PageDrawer"; -import MyField from "../components/MyField"; +import EmptyData from "../../../components/EmptyData"; +import MyCreateButton from "../../../components/MyCreateButton"; +import MyExportButton from '../../../components/MyExportButton'; +import PageDrawer from "../../../components/PageDrawer"; +import MyField from "../../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import * as Common from '@/utils/common'; diff --git a/rsf-admin/src/page/dictType/DictTypePanel.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypePanel.jsx similarity index 97% rename from rsf-admin/src/page/dictType/DictTypePanel.jsx rename to rsf-admin/src/page/system/dicts/dictType/DictTypePanel.jsx index 3c6e787..88fa553 100644 --- a/rsf-admin/src/page/dictType/DictTypePanel.jsx +++ b/rsf-admin/src/page/system/dicts/dictType/DictTypePanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; +import PanelTypography from "../../../components/PanelTypography"; import * as Common from '@/utils/common' const DictTypePanel = () => { diff --git a/rsf-admin/src/page/dictType/index.jsx b/rsf-admin/src/page/system/dicts/dictType/index.jsx similarity index 100% rename from rsf-admin/src/page/dictType/index.jsx rename to rsf-admin/src/page/system/dicts/dictType/index.jsx diff --git a/rsf-admin/src/page/serialRule/SerialRuleCreate.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx similarity index 100% rename from rsf-admin/src/page/serialRule/SerialRuleCreate.jsx rename to rsf-admin/src/page/system/serialRule/SerialRuleCreate.jsx diff --git a/rsf-admin/src/page/serialRule/SerialRuleDetail.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx similarity index 100% rename from rsf-admin/src/page/serialRule/SerialRuleDetail.jsx rename to rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx diff --git a/rsf-admin/src/page/serialRule/SerialRuleEdit.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleEdit.jsx similarity index 94% rename from rsf-admin/src/page/serialRule/SerialRuleEdit.jsx rename to rsf-admin/src/page/system/serialRule/SerialRuleEdit.jsx index 2b03b81..4440c43 100644 --- a/rsf-admin/src/page/serialRule/SerialRuleEdit.jsx +++ b/rsf-admin/src/page/system/serialRule/SerialRuleEdit.jsx @@ -24,10 +24,10 @@ import { Stack, Grid, Box, Typography } from '@mui/material'; import * as Common from '@/utils/common'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; +import EditBaseAside from "../../components/EditBaseAside"; +import CustomerTopToolBar from "../../components/EditTopToolBar"; +import MemoInput from "../../components/MemoInput"; +import StatusSelectInput from "../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); diff --git a/rsf-admin/src/page/serialRule/SerialRuleList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx similarity index 100% rename from rsf-admin/src/page/serialRule/SerialRuleList.jsx rename to rsf-admin/src/page/system/serialRule/SerialRuleList.jsx diff --git a/rsf-admin/src/page/serialRule/SerialRulePanel.jsx b/rsf-admin/src/page/system/serialRule/SerialRulePanel.jsx similarity index 98% rename from rsf-admin/src/page/serialRule/SerialRulePanel.jsx rename to rsf-admin/src/page/system/serialRule/SerialRulePanel.jsx index e3a0a7f..8349792 100644 --- a/rsf-admin/src/page/serialRule/SerialRulePanel.jsx +++ b/rsf-admin/src/page/system/serialRule/SerialRulePanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; +import PanelTypography from "../../components/PanelTypography"; import * as Common from '@/utils/common' const SerialRulePanel = () => { diff --git a/rsf-admin/src/page/serialRule/index.jsx b/rsf-admin/src/page/system/serialRule/index.jsx similarity index 100% rename from rsf-admin/src/page/serialRule/index.jsx rename to rsf-admin/src/page/system/serialRule/index.jsx diff --git a/rsf-admin/src/page/serialRuleItem/SerialRuleItemCreate.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx similarity index 96% rename from rsf-admin/src/page/serialRuleItem/SerialRuleItemCreate.jsx rename to rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx index 18f73aa..f51326e 100644 --- a/rsf-admin/src/page/serialRuleItem/SerialRuleItemCreate.jsx +++ b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx @@ -27,9 +27,9 @@ Grid, Box, } from '@mui/material'; -import DialogCloseButton from "../components/DialogCloseButton"; -import StatusSelectInput from "../components/StatusSelectInput"; -import MemoInput from "../components/MemoInput"; +import DialogCloseButton from "../../components/DialogCloseButton"; +import StatusSelectInput from "../../components/StatusSelectInput"; +import MemoInput from "../../components/MemoInput"; const SerialRuleItemCreate = (props) => { const { open, setOpen } = props; diff --git a/rsf-admin/src/page/serialRuleItem/SerialRuleItemEdit.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx similarity index 94% rename from rsf-admin/src/page/serialRuleItem/SerialRuleItemEdit.jsx rename to rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx index edec115..ecd5ba0 100644 --- a/rsf-admin/src/page/serialRuleItem/SerialRuleItemEdit.jsx +++ b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx @@ -24,10 +24,10 @@ import { Stack, Grid, Box, Typography } from '@mui/material'; import * as Common from '@/utils/common'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; -import EditBaseAside from "../components/EditBaseAside"; -import CustomerTopToolBar from "../components/EditTopToolBar"; -import MemoInput from "../components/MemoInput"; -import StatusSelectInput from "../components/StatusSelectInput"; +import EditBaseAside from "../../components/EditBaseAside"; +import CustomerTopToolBar from "../../components/EditTopToolBar"; +import MemoInput from "../../components/MemoInput"; +import StatusSelectInput from "../../components/StatusSelectInput"; const FormToolbar = () => { const { getValues } = useFormContext(); diff --git a/rsf-admin/src/page/serialRuleItem/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx similarity index 100% rename from rsf-admin/src/page/serialRuleItem/SerialRuleItemList.jsx rename to rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx diff --git a/rsf-admin/src/page/serialRuleItem/SerialRuleItemPanel.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx similarity index 98% rename from rsf-admin/src/page/serialRuleItem/SerialRuleItemPanel.jsx rename to rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx index 6561de2..47d94ce 100644 --- a/rsf-admin/src/page/serialRuleItem/SerialRuleItemPanel.jsx +++ b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx @@ -4,7 +4,7 @@ useTranslate, useRecordContext, } from 'react-admin'; -import PanelTypography from "../components/PanelTypography"; +import PanelTypography from "../../components/PanelTypography"; import * as Common from '@/utils/common' const SerialRuleItemPanel = () => { diff --git a/rsf-admin/src/page/serialRuleItem/index.jsx b/rsf-admin/src/page/system/serialRuleItem/index.jsx similarity index 100% rename from rsf-admin/src/page/serialRuleItem/index.jsx rename to rsf-admin/src/page/system/serialRuleItem/index.jsx diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/domain/CommonReponse.java b/rsf-common/src/main/java/com/vincent/rsf/common/domain/CommonReponse.java new file mode 100644 index 0000000..c4cacb9 --- /dev/null +++ b/rsf-common/src/main/java/com/vincent/rsf/common/domain/CommonReponse.java @@ -0,0 +1,31 @@ +package com.vincent.rsf.common.domain; + +import lombok.Data; +import lombok.experimental.Accessors; +import java.io.Serializable; +import java.util.Map; + +/*** + * 涓嬪彂浠诲姟鍝嶅簲Bean + */ +@Data +@Accessors(chain = true) +public class CommonReponse implements Serializable { + + /*** + * 鍝嶅簲鐘舵�佺爜銆� + * 飦�0锛氳〃绀烘帴鍙h姹傛垚鍔熴�� + * 鍏朵粬鍊硷細琛ㄧず鎺ュ彛璇锋眰澶辫触锛岃缁嗕俊鎭鍙傝�冮敊璇爜銆� + */ + private Integer code; + /** + *杩斿洖淇℃伅璇存槑銆� + * 飦垚鍔燂細"success"銆� + * 飦叾浠栵細璇︾粏鎻忚堪銆� + * */ + private String msg; + /** + *杩斿洖鐨勫搷搴旀暟鎹粨鏋勩�� + * */ + private Map<String, Object> data; +} diff --git a/rsf-server/src/main/java/asnOrder.sql b/rsf-server/src/main/java/asnOrder.sql index d073bf2..18cbb48 100644 --- a/rsf-server/src/main/java/asnOrder.sql +++ b/rsf-server/src/main/java/asnOrder.sql @@ -23,6 +23,7 @@ arrTime: "arrTime", rleStatus: "rleStatus", name: "name", + ntyStatus: "ntyStatus", }, -- ResourceContent diff --git a/rsf-server/src/main/java/asnOrderItem.sql b/rsf-server/src/main/java/asnOrderItem.sql index 7c92e02..87c7135 100644 --- a/rsf-server/src/main/java/asnOrderItem.sql +++ b/rsf-server/src/main/java/asnOrderItem.sql @@ -2,10 +2,10 @@ -- mysql insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.asnOrderItem', '0', '/manager/asnOrderItem', 'asnOrderItem', '0' , '0', '1' , '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query ASN鍗曟嵁', '', '1', 'manager:asnOrderItem:list', '0', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create ASN鍗曟嵁', '', '1', 'manager:asnOrderItem:save', '1', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update ASN鍗曟嵁', '', '1', 'manager:asnOrderItem:update', '2', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete ASN鍗曟嵁', '', '1', 'manager:asnOrderItem:remove', '3', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query ASN鍗曟嵁', '139', '1', 'manager:asnOrderItem:list', '0', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create ASN鍗曟嵁', '139', '1', 'manager:asnOrderItem:save', '1', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update ASN鍗曟嵁', '139', '1', 'manager:asnOrderItem:update', '2', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete ASN鍗曟嵁', '139', '1', 'manager:asnOrderItem:remove', '3', '1', '1'); -- locale menu name asnOrderItem: 'AsnOrderItem', @@ -28,6 +28,7 @@ qrcode: "qrcode", barcode: "barcode", packName: "packName", + ntyStatus: "ntyStatus", }, -- ResourceContent diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java new file mode 100644 index 0000000..b8fae24 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RemotesInfoProperties.java @@ -0,0 +1,46 @@ +package com.vincent.rsf.server.api.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author Ryan + * @version 1.0 + * @title RemotesInfoProperties + * @description + * @create 2025/3/7 09:48 + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "platform.erp") +public class RemotesInfoProperties { + + /** + * 鎺ュ彛host + */ + private String host; + /** + * 绔彛鍙� + */ + private String port; + + /** + * 鎺ュ彛閾炬帴鍓嶇紑 + */ + private String prePath; + + @Data + @Configuration + @ConfigurationProperties(prefix = "platform.erp.api") + public class ApiInfo { + /** + * 涓�閿笂鎶ヨ川妫�鎺ュ彛 + */ + private String notifyInspect; + } + + public String getBaseUrl() { + return this.host + ":" + this.port + "/" + this.prePath; + } +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RestTemplateConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RestTemplateConfig.java new file mode 100644 index 0000000..5a7dc87 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/config/RestTemplateConfig.java @@ -0,0 +1,22 @@ +package com.vincent.rsf.server.api.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +/** + * @author Ryan + * @version 1.0 + * @title RestTemplateConfig + * @description + * @create 2025/3/7 10:01 + */ + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate getInstant() { + return new RestTemplate(); + } +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/PoItemsDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/PoItemsDto.java new file mode 100644 index 0000000..01aa9f7 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/PoItemsDto.java @@ -0,0 +1,43 @@ +package com.vincent.rsf.server.api.entity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @author Ryan + * @version 1.0 + * @title PoItemsDto + * @description + * @create 2025/3/7 08:49 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "PoItemsDto", description = "PO鍗曟嵁") +public class PoItemsDto implements Serializable { + + @ApiModelProperty("PO鍗曟槑缁嗘爣璇�") + private String id; + + @ApiModelProperty("PO涓诲崟鏍囪瘑") + private String purchaseId; + + @ApiModelProperty("Erp鏄庣粏鍗曟爣璇�") + private String erpItemId; + + @ApiModelProperty("鐗╂枡缂栫爜") + private String matnrCode; + + @ApiModelProperty("鐗╂枡鍚嶇О") + private String matnrName; + + @ApiModelProperty("璁¢噺鍗曚綅") + private String unit; + + @ApiModelProperty("鏁伴噺") + private String anfme; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectItem.java new file mode 100644 index 0000000..080da32 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectItem.java @@ -0,0 +1,38 @@ +package com.vincent.rsf.server.api.entity.params; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author Ryan + * @version 1.0 + * @title ErpInspectItem + * @description + * @create 2025/3/7 09:35 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "ErpInspectItem", description = "Erp璐ㄦ鍗曟嵁鏄庣粏") +public class ErpInspectItem { + + /** + * erp鏄庣粏缂栫爜 + */ + public String poItemId; + + /** + * 鐗╂枡缂栫爜 + */ + public String matnrCode; + + /** + * 璁¢噺鍗曚綅 + */ + public String unit; + + /** + * 鏁伴噺 + */ + public Double anfme; +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectParams.java new file mode 100644 index 0000000..76badb5 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/ErpInspectParams.java @@ -0,0 +1,36 @@ +package com.vincent.rsf.server.api.entity.params; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * @author Ryan + * @version 1.0 + * @title ErpInspectParams + * @description + * @create 2025/3/6 15:08 + */ +@Data +@Accessors(chain = true) +@ApiModel(value = "ErpInspectParams", description = "Erp璐ㄦ鍗曟嵁") +public class ErpInspectParams implements Serializable { + + /** + * 涓诲崟鏍囪瘑 + */ + public String poId; + /** + * 涓诲崟缂栫爜 + */ + private String poCode; + /** + * 璐ㄦ鏄庣粏 + */ + private List<ErpInspectItem> children; + +} + diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java index a241420..266c842 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/ErpApiService.java @@ -2,6 +2,7 @@ import com.vincent.rsf.server.api.controller.params.Order; +import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import java.util.List; @@ -15,4 +16,6 @@ public interface ErpApiService { boolean syncPurchasee(List<Order> orders); + + boolean reportInspectNotify(List<PoItemsDto> items); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java index b60f6e1..6ba6412 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ErpApiServiceImpl.java @@ -1,10 +1,21 @@ package com.vincent.rsf.server.api.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.vincent.rsf.common.domain.CommonReponse; import com.vincent.rsf.framework.exception.CoolException; -import com.vincent.rsf.server.api.controller.params.OrderItem; +import com.vincent.rsf.server.api.config.RemotesInfoProperties; +import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.api.entity.enums.OrderType; +import com.vincent.rsf.server.api.entity.params.ErpInspectItem; +import com.vincent.rsf.server.api.entity.params.ErpInspectParams; +import com.vincent.rsf.server.manager.entity.AsnOrder; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.entity.PurchaseItem; +import com.vincent.rsf.server.manager.service.AsnOrderItemService; +import com.vincent.rsf.server.manager.service.AsnOrderService; import com.vincent.rsf.server.manager.service.PurchaseItemService; import com.vincent.rsf.server.manager.service.PurchaseService; import com.vincent.rsf.server.system.constant.SerialRuleCode; @@ -12,13 +23,21 @@ import com.vincent.rsf.server.system.utils.SerialRuleUtils; import com.vincent.rsf.server.api.service.ErpApiService; import com.vincent.rsf.server.manager.entity.Purchase; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @author Ryan @@ -27,14 +46,26 @@ * @description * @create 2025/3/4 16:27 */ -@Service -public class ErpApiServiceImpl extends ServiceImpl implements ErpApiService { +@Slf4j +@Service("erpApiService") +public class ErpApiServiceImpl implements ErpApiService { @Autowired private PurchaseService purchaseService; - @Autowired private PurchaseItemService purchaseItemService; + + @Autowired + private AsnOrderService asnOrderService; + + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private RestTemplate restTemplate; + @Autowired + private RemotesInfoProperties remotesInfoProperties; + @Autowired + private RemotesInfoProperties.ApiInfo apiInfo; @Override @Transactional(rollbackFor = Exception.class) @@ -69,4 +100,106 @@ return true; } + /** + * @author Ryan + * @description 涓婃姤璐ㄦ鍒楄〃 + * @params [items 鍒楄〃] + * @return boolean + * @time 2025/3/7 09:12 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean reportInspectNotify(List<PoItemsDto> items) { + if (items.isEmpty()) { + throw new CoolException("涓婃姤鍐呭涓虹┖锛侊紒"); + } + List<ErpInspectParams> inspectParams = new ArrayList<>(); + Map<String, List<PoItemsDto>> listMap = items.stream().collect(Collectors.groupingBy(PoItemsDto::getPurchaseId)); + listMap.keySet().forEach(key -> { + Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getId, Long.valueOf(key))); + if (Objects.isNull(purchase)) { + throw new CoolException("閲囪喘鍗曚俊鎭湁璇紒锛�"); + } + ErpInspectParams params = new ErpInspectParams(); + List<ErpInspectItem> inspectItems = new ArrayList<>(); + //璧嬪�糴rp涓诲崟缂栫爜,缂栧彿 + params.setPoId(purchase.getErpId()) + .setPoCode(purchase.getErpCode()); + List<PoItemsDto> dtos = listMap.get(key); + if (dtos.isEmpty()) { + throw new CoolException("鍗曟嵁淇℃伅閿欒锛侊紒"); + } + dtos.forEach(dto -> { + ErpInspectItem inspect= new ErpInspectItem(); + BeanUtils.copyProperties(dto, inspect); + //璧嬪�糴rp鏄庣粏缂栫爜 + inspect.setPoItemId(dto.getErpItemId()); + inspectItems.add(inspect); + }); + params.setChildren(inspectItems); + inspectParams.add(params); + + }); + + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + //鑾峰彇涓婃姤璐ㄦ鎺ュ彛 + String url = remotesInfoProperties.getBaseUrl() + apiInfo.getNotifyInspect(); + // 璁剧疆璇锋眰鍙傛暟 + params.add("params", JSONObject.toJSONString(inspectParams)); + log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", url, JSONObject.toJSONString(inspectParams)); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Type", "application/json"); + HttpEntity httpEntity = new HttpEntity<>(params, headers); + // 璇锋眰 + ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class); + log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange); + if (Objects.isNull(exchange.getBody()) || exchange.getBody() == null) { + throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒"); + } else { + CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody()); + if (reponse.getCode() == 0) { + //淇敼asn涓婃姤鐘舵�� + Set<String> itemSets = items.stream().map(PoItemsDto::getId).collect(Collectors.toSet()); + Set<Long> longSet = new HashSet<>(); + itemSets.forEach(set -> { + longSet.add(Long.parseLong(set)); + }); + + List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getPoDetlId, longSet)); + if (asnOrderItems.isEmpty()) { + throw new CoolException("ASN鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<Long> list = asnOrderItems.stream().map(AsnOrderItem::getId).collect(Collectors.toList()); + + /************************** 淇敼ASN鏄庣粏鍗曠姸鎬� ******************************/ + + + if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().in(AsnOrderItem::getId, list).set(AsnOrderItem::getStatus, 1))) { + throw new CoolException("ASN鏄庣粏鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + + /************************** 淇敼ASN涓诲崟鏁版嵁 ******************************/ + //鑾峰彇ASN鏄庣粏璁㈠崟鏍囪瘑 + List<Long> ids = asnOrderItems.stream().map(AsnOrderItem::getAsnId).collect(Collectors.toList()); + //ASN鏄庣粏鍗曟嵁鍒嗙粍 + Map<Long, List<AsnOrderItem>> asnIds = asnOrderItems.stream().collect(Collectors.groupingBy(AsnOrderItem::getAsnId)); + ids.forEach(id -> { + int count = asnOrderService.count(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, id)); + if (count == asnIds.get(id).size()) { + if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 1))) { + throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + } else { + if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 2))) { + throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + } + }); + return true; + } else { + throw new CoolException(reponse.getMsg()); + } + } + } + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java index f118786..68d4754 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java @@ -22,8 +22,8 @@ // generator.username="sa"; // generator.password="Zoneyung@zy56$"; - generator.table="man_asn_order_item"; - generator.tableDesc="ASN鍗曟嵁"; + generator.table="man_purchase_item"; + generator.tableDesc="閲囪喘鏄庣粏鍗�"; generator.packagePath="com.vincent.rsf.server.manager"; generator.build(); @@ -31,7 +31,7 @@ /* CREATE TABLE `man_tablename` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', - `uuid` VARCHAR(255) DEFAULT NULL COMMENT '缂栧彿', + `code` VARCHAR(255) DEFAULT NULL COMMENT '缂栧彿', `name` VARCHAR(255) DEFAULT NULL COMMENT '鍚嶇О(*)', `status` INT(1) NOT NULL DEFAULT '1' COMMENT '鐘舵�亄1:姝e父,0:鍐荤粨}', `deleted` INT(1) NOT NULL DEFAULT '0' COMMENT '鏄惁鍒犻櫎{1:鏄�,0:鍚', diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SysStockProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SysStockProperties.java new file mode 100644 index 0000000..306fc3c --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/SysStockProperties.java @@ -0,0 +1,48 @@ +package com.vincent.rsf.server.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author Ryan + * @version 1.0 + * @title SysStockFlowProperties + * @description + * @create 2025/3/5 17:02 + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "stock") +public class SysStockProperties { + + + /** + * wms鏄惁鍏佽鎵撳嵃璐х墿鏍囩, 榛樿鍙墦鍗� + */ + private Boolean flagPrinter; + + /** + * 鏄惁鑷姩鐢熸垚ASN鍗曪紙榛樿锛氭槸锛夛紝涓恒�庡惁銆忓垯寮�鍚疨O鍗曟墜鍔ㄧ敓鎴怉SN鍗曞姛鑳� + */ + private Boolean flagAutoAsn; + + + + @Data + @Configuration + @ConfigurationProperties(prefix = "stock.inspect") + public class InspectProperties { + /** + * 鏄惁寮�鍚笂鏋舵牎楠� + */ + private Boolean flagAvailable; + + /** + * 鏄惁寮�鍚敹璐ф牎楠岋紝 涓婃灦鏍¢獙鍜屾敹璐ф牎楠岋紝鍙細寮�鍚竴涓� + */ + private Boolean flagReceiving; + + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java index e088b8a..6144741 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java @@ -12,6 +12,7 @@ import com.vincent.rsf.server.manager.entity.AsnOrder; import com.vincent.rsf.server.manager.service.AsnOrderService; import com.vincent.rsf.server.system.controller.BaseController; +import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -20,6 +21,7 @@ import java.util.*; @RestController +@Api(tags = "ASN鍏ュ簱閫氱煡鍗�") public class AsnOrderController extends BaseController { @Autowired @@ -107,6 +109,23 @@ ExcelUtil.build(ExcelUtil.create(asnOrderService.list(), AsnOrder.class), response); } + /** + * 璐ㄦ涓婃姤 + * @param orders + * @return + */ + @PostMapping("/asnOrder/inspect") + @PreAuthorize("hasAuthority('manager:asnOrder:list')") + public R notifyInspect(@RequestBody List<AsnOrder> orders) { + if (orders.isEmpty()) { + return R.error("涓婃姤鍗曟嵁涓嶈兘涓虹┖!!"); + } + if (asnOrderService.notifyInspect(orders)) { + return R.ok("璐ㄦ涓婃姤鎴愬姛锛侊紒"); + } else { + return R.error("涓�閿笂鎶ュけ璐ワ紒锛�"); + } + } } 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 e07af37..f9fa8da 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 @@ -95,6 +95,12 @@ private Date arrTime; /** + * 璐ㄦ涓婃姤鐘舵�� + */ + @ApiModelProperty("涓婃姤鐘舵�� 0锛氭湭涓婃姤, 1锛氬凡涓婃姤") + private Integer ntyStatus; + + /** * 閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� */ @ApiModelProperty(value= "閲婃斁鐘舵�� 0: 姝e父 1: 宸查噴鏀� ") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java index b59e788..3de8476 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java @@ -55,11 +55,15 @@ @ApiModelProperty(value= "鍗曟嵁绫诲瀷") private String type; + + @ApiModelProperty(value = "erp涓诲崟鏍囪瘑") + private String erpId; + /** * 鍗曟嵁鏉ユ簮 */ @ApiModelProperty(value= "鍗曟嵁鏉ユ簮") - private String from; + private String source; /** * 棰勮鍒拌揪鏃堕棿 @@ -171,10 +175,11 @@ public Purchase() {} - public Purchase(String code,String type,String from,Date preArr,Double anfme,Double qty,Double workQty,String channel,String erpCode,Date startTime,Date endTime,String project,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + public Purchase(String code,String type,String source,String erpId ,Date preArr,Double anfme,Double qty,Double workQty,String channel,String erpCode,Date startTime,Date endTime,String project,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.code = code; this.type = type; - this.from = from; + this.source = source; + this.erpId = erpId; this.preArr = preArr; this.anfme = anfme; this.qty = qty; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java index a9c82a5..0ae2108 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/PurchaseItem.java @@ -47,7 +47,7 @@ * erp琛屽彿 */ @ApiModelProperty(value= "erp琛屽彿") - private String erpId; + private String erpItemId; /** * 鐗╂枡缂栫爜 @@ -168,9 +168,9 @@ public PurchaseItem() {} - public PurchaseItem(Long purchaseId,String erpId,String matnrCode,String matnrName,String unit,Double anfme,Double qty,Double nromQty,Double asnQty,Double printQty,String splrName,String splrCode,String splrBatch,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + public PurchaseItem(Long purchaseId,String erpItemId,String matnrCode,String matnrName,String unit,Double anfme,Double qty,Double nromQty,Double asnQty,Double printQty,String splrName,String splrCode,String splrBatch,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.purchaseId = purchaseId; - this.erpId = erpId; + this.erpItemId = erpItemId; this.matnrCode = matnrCode; this.matnrName = matnrName; this.unit = unit; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/PurchaseMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/PurchaseMapper.java index 7a4c6ef..535e9d7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/PurchaseMapper.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/PurchaseMapper.java @@ -1,12 +1,18 @@ package com.vincent.rsf.server.manager.mapper; +import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.manager.entity.Purchase; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Set; @Mapper @Repository public interface PurchaseMapper extends BaseMapper<Purchase> { + List<PoItemsDto> poList(@Param("ids") Set<Long> ids); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java similarity index 86% rename from rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/ScheduleJobs.java rename to rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java index aceb1c9..e811c81 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/ScheduleJobs.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java @@ -1,15 +1,19 @@ -package com.vincent.rsf.server.manager.utils; +package com.vincent.rsf.server.manager.schedules; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.config.SysStockProperties; import com.vincent.rsf.server.common.utils.DateUtils; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.service.*; +import com.vincent.rsf.server.system.constant.SerialRuleCode; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -38,6 +42,9 @@ @Autowired private AsnOrderItemService asnOrderItemService; + + @Resource + private SysStockProperties flowProperties; /** * @author Ryan * @description 鏍规嵁PO鍗曟嵁鐢熸垚ASN鍗�,鑷姩鐢熸垚ASN鍗曚负鍏ㄩ噺鐢熸垚 @@ -48,6 +55,10 @@ @Scheduled(cron = "0 0/30 * * * ? ") @Transactional(rollbackFor = Exception.class) public void genAsnOrder() { + //鍒ゆ柇鏄惁寮�鍚嚜鍔ㄧ敓鎴怉SN鍗曟嵁 + if (!flowProperties.getFlagAutoAsn()) { + return; + } //鑾峰彇鏈敓鎴怉SN鍗曟嵁 List<Purchase> purchases = purchaseService.list(new LambdaQueryWrapper<Purchase>().eq(Purchase::getStatus, 0)); //閲囪喘鍗曚负绌猴紝鐩存帴璺冲嚭褰撳墠浠诲姟 @@ -67,7 +78,10 @@ throw new CoolException("瀛愬垪琛ㄦ暟鎹负绌猴紝璇锋煡璇O鍗曟槸鍚︽纭綍鍏ワ紒锛�"); } AsnOrder order = new AsnOrder(); + //鏍规嵁缂栫爜瑙勫垯鐢熸垚ASN鍗曞彿 + String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, purchase); order.setAnfme(purchase.getAnfme()) + .setCode(code) .setArrTime(purchase.getPreArr()) .setQty(purchase.getQty()) .setPoId(purchase.getId()) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java index 54b0fe9..3415d00 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.server.manager.entity.AsnOrder; +import java.util.List; + public interface AsnOrderService extends IService<AsnOrder> { + boolean notifyInspect(List<AsnOrder> orders); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java index 8906fbf..61f0632 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java @@ -1,12 +1,58 @@ package com.vincent.rsf.server.manager.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.api.entity.dto.PoItemsDto; +import com.vincent.rsf.server.api.service.ErpApiService; +import com.vincent.rsf.server.manager.entity.AsnOrderItem; +import com.vincent.rsf.server.manager.entity.Purchase; +import com.vincent.rsf.server.manager.entity.PurchaseItem; +import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; import com.vincent.rsf.server.manager.entity.AsnOrder; +import com.vincent.rsf.server.manager.mapper.PurchaseMapper; import com.vincent.rsf.server.manager.service.AsnOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author Ryan + * @description + * @throws + * @return + * @time 2025/3/7 08:02 + */ @Service("asnOrderService") public class AsnOrderServiceImpl extends ServiceImpl<AsnOrderMapper, AsnOrder> implements AsnOrderService { + @Autowired + private ErpApiService erpApiService; + @Resource + private PurchaseMapper purchaseMapper; + + @Resource + private AsnOrderItemMapper asnOrderItemMapper; + + @Override + public boolean notifyInspect(List<AsnOrder> orders) { + if (orders.isEmpty()) { + throw new CoolException("涓婃姤鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + Set<Long> asnIds = orders.stream().map(AsnOrder::getId).collect(Collectors.toSet()); + if (asnIds.isEmpty()) { + throw new CoolException("ASN鍗曟嵁涓嶈兘涓虹┖锛侊紒"); + } + List<PoItemsDto> items = purchaseMapper.poList(asnIds); + if (erpApiService.reportInspectNotify(items)) { + return true; + } else { + return false; + } + } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java index bc92ad9..6fdeb55 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/SerialRuleCode.java @@ -9,5 +9,13 @@ */ public class SerialRuleCode { + /** + * 绯荤粺PO鍗曞悓姝ョ紪鐮佽鍒� + */ public final static String PURCHASE_CODE = "sys_purchase_code"; + + /** + * ASN閫氱煡鍗曠敓鎴愮紪鐮佽鍒� + */ + public final static String SYS_ASN_ORDER = "sys_ans_order"; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java index c026c72..02a3c1b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/SerialRuleUtils.java @@ -41,7 +41,7 @@ .getOne(new LambdaQueryWrapper<SerialRule>() .eq(SerialRule::getCode, code)); if (Objects.isNull(serialRule)) { - throw new CoolException("閲囪喘缂栫爜瑙勫垯涓嶅瓨鍦紒锛�"); + throw new CoolException("褰撳墠涓氬姟锛�" + code + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒"); } SerialRuleItemService serialRuleItemService = SpringUtils.getBean(SerialRuleItemService.class); diff --git a/rsf-server/src/main/java/purchase.sql b/rsf-server/src/main/java/purchase.sql index 6b17750..976bf84 100644 --- a/rsf-server/src/main/java/purchase.sql +++ b/rsf-server/src/main/java/purchase.sql @@ -2,10 +2,10 @@ -- mysql insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.purchase', '0', '/manager/purchase', 'purchase', '0' , '0', '1' , '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query ERP閲囪喘鍗�', '', '1', 'manager:purchase:list', '0', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create ERP閲囪喘鍗�', '', '1', 'manager:purchase:save', '1', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update ERP閲囪喘鍗�', '', '1', 'manager:purchase:update', '2', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete ERP閲囪喘鍗�', '', '1', 'manager:purchase:remove', '3', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 閲囪喘鍗�', '148', '1', 'manager:purchase:list', '0', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 閲囪喘鍗�', '148', '1', 'manager:purchase:save', '1', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 閲囪喘鍗�', '148', '1', 'manager:purchase:update', '2', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 閲囪喘鍗�', '148', '1', 'manager:purchase:remove', '3', '1', '1'); -- locale menu name purchase: 'Purchase', @@ -13,17 +13,19 @@ -- locale field purchase: { code: "code", + erpId: "erpId", type: "type", - from: "from", + wkType: "wkType", + source: "source", preArr: "preArr", anfme: "anfme", qty: "qty", workQty: "workQty", channel: "channel", erpCode: "erpCode", + project: "project", startTime: "startTime", endTime: "endTime", - project: "project", }, -- ResourceContent diff --git a/rsf-server/src/main/java/purchaseItem.sql b/rsf-server/src/main/java/purchaseItem.sql index 25a5cc5..acb3d51 100644 --- a/rsf-server/src/main/java/purchaseItem.sql +++ b/rsf-server/src/main/java/purchaseItem.sql @@ -2,10 +2,10 @@ -- mysql insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.purchaseItem', '0', '/manager/purchaseItem', 'purchaseItem', '0' , '0', '1' , '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query ERP閲囪喘鍗�', '', '1', 'manager:purchaseItem:list', '0', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create ERP閲囪喘鍗�', '', '1', 'manager:purchaseItem:save', '1', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update ERP閲囪喘鍗�', '', '1', 'manager:purchaseItem:update', '2', '1', '1'); -insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete ERP閲囪喘鍗�', '', '1', 'manager:purchaseItem:remove', '3', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 閲囪喘鏄庣粏鍗�', '153', '1', 'manager:purchaseItem:list', '0', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 閲囪喘鏄庣粏鍗�', '153', '1', 'manager:purchaseItem:save', '1', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 閲囪喘鏄庣粏鍗�', '153', '1', 'manager:purchaseItem:update', '2', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 閲囪喘鏄庣粏鍗�', '153', '1', 'manager:purchaseItem:remove', '3', '1', '1'); -- locale menu name purchaseItem: 'PurchaseItem', @@ -13,18 +13,18 @@ -- locale field purchaseItem: { purchaseId: "purchaseId", - erpId: "erpId", + erpItemId: "erpItemId", matnrCode: "matnrCode", matnrName: "matnrName", unit: "unit", anfme: "anfme", qty: "qty", - nomQty: "nomQty", + nromQty: "nromQty", asnQty: "asnQty", printQty: "printQty", - pulrName: "pulrName", - pulrCode: "pulrCode", - pulrBatch: "pulrBatch", + splrName: "splrName", + splrCode: "splrCode", + splrBatch: "splrBatch", }, -- ResourceContent diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index f63202c..98555cf 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -65,4 +65,32 @@ password: xltys1995 port: 6379 timeout: 5000 - index: 15 \ No newline at end of file + index: 15 + +#骞冲彴鎺ュ彛淇℃伅閰嶇疆(濡傦細ERP, QMS, WCS绛�) +platform: + #浼佷笟ERP骞冲彴 + erp: + #localhost + host: http://127.0.0.1 + #绔彛鍙� + port: 8080 + #鎺ュ搧閾炬帴鍓嶇紑 + prePath: rsf-server + #鎺ュ彛鏄庣粏 + api: + #璐ㄦ涓婃姤鎺ュ彛 + notifyInspect: /report/inspect + +#浠撳簱鍔熻兘鍙傛暟閰嶇疆 +stock: + #鏄惁鍏佽鎵撳嵃璐х墿鏍囩锛� 榛樿鍏佽鎵撳嵃锛屼篃鍙敱渚涘簲鍟嗘彁渚涙爣绛� + flagPrinter: false + #鏄惁鑷姩鐢熸垚ASN鍗曪紙榛樿锛氭槸锛夛紝涓恒�庡惁銆忓垯寮�鍚疨O鍗曟墜鍔ㄧ敓鎴怉SN鍗曞姛鑳� + flagAutoAsn: true + #璐ㄦ鍔熻兘 鏄惁鏍¢獙涓婃灦锛堥粯璁わ細鏄級锛屾槸鍚︽牎楠屾敹璐э紙榛樿锛氬惁锛� + inspect: + #鍒ゆ柇鏄悗妫�楠屽悎鏍煎悗锛屾墠鍏佽涓婃灦 + flagAvailable: true + #鍒ゆ柇鏄惁鏍¢獙鍚堟牸鍚庯紝鎵嶅厑璁告敹璐� + flagReceiving: false \ No newline at end of file diff --git a/rsf-server/src/main/resources/application-prod.yml b/rsf-server/src/main/resources/application-prod.yml index ecc2fc2..1c91565 100644 --- a/rsf-server/src/main/resources/application-prod.yml +++ b/rsf-server/src/main/resources/application-prod.yml @@ -62,4 +62,7 @@ password: xltys1995 port: 6379 timeout: 5000 - index: 11 \ No newline at end of file + index: 11 + +stock: + flagAvailable: true diff --git a/rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml b/rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml index b1c92ce..60ab306 100644 --- a/rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml +++ b/rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml @@ -2,4 +2,27 @@ <!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.PurchaseMapper"> + <select id="poList" resultType="com.vincent.rsf.server.api.entity.dto.PoItemsDto"> + SELECT + id, + purchase_id, + erp_item_id, + matnr_code, + matnr_name, + unit, + anfme + FROM + man_purchase_item mpi + WHERE + id IN ( SELECT po_detl_id FROM man_asn_order_item + <where> + 1 = 1 + <if test="ids != null and ids.size() > 0"> + <foreach collection="ids" index="index" item="item" separator="," open="AND asn_id IN (" close=")"> + #{item} + </foreach> + </if> + </where> + ) + </select> </mapper> -- Gitblit v1.9.1