| | |
| | | "Bash(mysql *)", |
| | | "mcp__designcomputer-mysql_mcp_server__execute_sql", |
| | | "mcp__designcomputer-mysql_mcp_server__get_schema_info", |
| | | "mcp__designcomputer-mysql_mcp_server__get_table_sample" |
| | | "mcp__designcomputer-mysql_mcp_server__get_table_sample", |
| | | "Bash(mvn clean *)", |
| | | "Bash(python3)", |
| | | "Bash(cat)", |
| | | "Bash(chmod +x /tmp/fix_controller.sh)", |
| | | "Bash(/tmp/fix_controller.sh)", |
| | | "Bash(chmod +x /tmp/fix2.sh)", |
| | | "Bash(/tmp/fix2.sh)" |
| | | ], |
| | | "deny": [ |
| | | "Bash(rm -rf *)", |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # éå®åè´§åºåºæµç¨ - APIæ¥å£ä¸åæ®µæ±æ» |
| | | |
| | | ## æµç¨å¾ |
| | | |
| | | ``` |
| | | âââââââââââââââ âââââââââââââââ âââââââââââââââ âââââââââââââââ |
| | | â éå®è®¢å ââââ>â åè´§éç¥å ââââ>â éå®åºåºå ââââ>â åºåºå®æ â |
| | | â (ERP模å) â â (MES模å) â â (MES模å) â â ç¶æåå â |
| | | âââââââââââââââ âââââââââââââââ âââââââââââââââ âââââââââââââââ |
| | | â â â â |
| | | â¼ â¼ â¼ â¼ |
| | | åºåºç¶æåæ¥ åºåºç¶æåæ¥ æ§è¡åºåº ç¶æåå䏿¸¸ |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãéå®è®¢å (ERP模å) |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/erp/sale/order/index.ts` |
| | | |
| | | ### æ¥è¯¢æ¥å£ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/erp/sale-order/page` | å页æ¥è¯¢ | |
| | | | GET | `/erp/sale-order/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | GET | `/erp/sale-order/item/list-by-order-id?orderId={orderId}` | æ¥è¯¢è®¢åæç»å表 | |
| | | |
| | | ### æ¥å£å®ä¹ |
| | | |
| | | ```typescript |
| | | export namespace ErpSaleOrderApi { |
| | | /** éå®è®¢åä¿¡æ¯ */ |
| | | export interface SaleOrder { |
| | | id?: number; // 订åID |
| | | no: string; // éå®è®¢åå· |
| | | customerId: number; // 客æ·ID |
| | | customerName?: string; // 客æ·åç§° |
| | | orderTime: Date; // è®¢åæ¶é´ |
| | | totalCount: number; // å计æ°é |
| | | totalPrice: number; // å计éé¢ |
| | | status: number; // ç¶æï¼10-æªå®¡æ ¸, 20-å·²å®¡æ ¸, 30-å·²ä½åº |
| | | outStatus?: number; // åºåºç¶æï¼0-æªåºåº, 1-é¨ååºåº, 2-å
¨é¨åºåº |
| | | outCount: number; // éå®åºåºæ°é |
| | | inCount?: number; // éè´å
¥åºæ°é |
| | | returnCount: number; // éå®éè´§æ°é |
| | | items?: SaleOrderItem[]; // éå®è®¢åæç» |
| | | } |
| | | |
| | | /** éå®è®¢åæç» */ |
| | | export interface SaleOrderItem { |
| | | id?: number; // æç»ID |
| | | seq?: number; // åºå· |
| | | orderId?: number; // 订åID |
| | | productId?: number; // 产åID |
| | | productName?: string; // 产ååç§° |
| | | productBarCode?: string; // äº§åæ¡ç |
| | | productUnitName?: string; // åä½ |
| | | productPrice?: number; // åä»· |
| | | count?: number; // æ°é |
| | | outCount?: number; // åºåºæ°é |
| | | taxPercent?: number; // ç¨ç |
| | | taxPrice?: number; // ç¨é¢ |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### ç¶ææä¸¾ |
| | | |
| | | ```typescript |
| | | // éå®è®¢åç¶æ |
| | | const SaleOrderStatus = { |
| | | UN_AUDITED: 10, // æªå®¡æ ¸ |
| | | AUDITED: 20, // å·²å®¡æ ¸ |
| | | CANCELLED: 30, // å·²ä½åº |
| | | } |
| | | |
| | | // éå®è®¢ååºåºç¶æ |
| | | const SaleOrderOutStatus = { |
| | | NONE: 0, // æªåºåº |
| | | PARTIAL: 1, // é¨ååºåº |
| | | ALL: 2, // å
¨é¨åºåº |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## äºãåè´§éç¥å (MES模å) |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/mes/wm/salesnotice/index.ts` |
| | | |
| | | ### æ¥è¯¢æ¥å£ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/mes/wm/sales-notice/page` | å页æ¥è¯¢ | |
| | | | GET | `/mes/wm/sales-notice/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | POST | `/mes/wm/sales-notice/create` | å建 | |
| | | | PUT | `/mes/wm/sales-notice/update` | ä¿®æ¹ | |
| | | | DELETE | `/mes/wm/sales-notice/delete?id={id}` | å é¤ | |
| | | | PUT | `/mes/wm/sales-notice/submit?id={id}` | æäº¤ | |
| | | | POST | `/mes/wm/sales-notice/generate-from-sale-order` | ä»éå®è®¢åçæ | |
| | | | POST | `/mes/wm/sales-notice/generate-product-sales` | çæéå®åºåºå | |
| | | |
| | | ### æ¥å£å®ä¹ |
| | | |
| | | ```typescript |
| | | export namespace MesWmSalesNoticeApi { |
| | | /** åè´§éç¥å */ |
| | | export interface SalesNotice { |
| | | id?: number; // éç¥åID |
| | | code?: string; // éç¥åå· |
| | | name?: string; // éç¥ååç§° |
| | | saleOrderId?: number; // éå®è®¢åID |
| | | saleOrderCode?: string; // éå®è®¢åå· |
| | | clientId?: number; // 客æ·ID |
| | | clientName?: string; // 客æ·åç§° |
| | | salesDate?: Date; // åè´§æ¥æ |
| | | recipientName?: string; // æ¶è´§äºº |
| | | recipientTelephone?: string; // èç³»æ¹å¼ |
| | | recipientAddress?: string; // æ¶è´§å°å |
| | | status?: number; // åæ®ç¶æï¼0-è稿, 20-å¾
åºåº, 30-已宿 |
| | | outStatus?: number; // åºåºç¶æï¼0-æªåºåº, 1-é¨ååºåº, 2-å
¨é¨åºåº |
| | | remark?: string; // 夿³¨ |
| | | createTime?: Date; // å建æ¶é´ |
| | | } |
| | | |
| | | /** å建/ä¿®æ¹è¯·æ± */ |
| | | export interface SalesNoticeSaveReq { |
| | | id?: number; // éç¥åIDï¼ä¿®æ¹æ¶å¿
å¡«ï¼ |
| | | code: string; // éç¥åå· |
| | | name: string; // éç¥ååç§° |
| | | clientId: number; // 客æ·ID |
| | | saleOrderId?: number; // éå®è®¢åID |
| | | saleOrderCode?: string; // éå®è®¢åå· |
| | | salesDate: Date; // åè´§æ¥æ |
| | | recipientName?: string; // æ¶è´§äºº |
| | | recipientTelephone?: string; // èç³»æ¹å¼ |
| | | recipientAddress?: string; // æ¶è´§å°å |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | } |
| | | |
| | | /** æ¥è¯¢å页 */ |
| | | export function getSalesNoticePage(params: PageParam): Promise<PageResult<SalesNotice>> |
| | | |
| | | /** æ¥è¯¢è¯¦æ
*/ |
| | | export function getSalesNotice(id: number): Promise<SalesNotice> |
| | | |
| | | /** å建åè´§éç¥å */ |
| | | export function createSalesNotice(data: SalesNoticeSaveReq): Promise<number> |
| | | |
| | | /** ä¿®æ¹åè´§éç¥å */ |
| | | export function updateSalesNotice(data: SalesNoticeSaveReq): Promise<boolean> |
| | | |
| | | /** å é¤åè´§éç¥å */ |
| | | export function deleteSalesNotice(id: number): Promise<boolean> |
| | | |
| | | /** æäº¤åè´§éç¥å */ |
| | | export function submitSalesNotice(id: number): Promise<boolean> |
| | | |
| | | /** ä»éå®è®¢åçæåè´§éç¥å */ |
| | | export function generateFromSaleOrder(saleOrderId: number): Promise<number> |
| | | |
| | | /** ä»åè´§éç¥åçæéå®åºåºå */ |
| | | export function generateProductSales(id: number): Promise<number> |
| | | ``` |
| | | |
| | | ### è¡è¡¨æ¥å£ |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/mes/wm/salesnotice/line/index.ts` |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/mes/wm/sales-notice-line/page` | å页æ¥è¯¢ | |
| | | | GET | `/mes/wm/sales-notice-line/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | POST | `/mes/wm/sales-notice-line/create` | å建 | |
| | | | PUT | `/mes/wm/sales-notice-line/update` | ä¿®æ¹ | |
| | | | DELETE | `/mes/wm/sales-notice-line/delete?id={id}` | å é¤ | |
| | | |
| | | ```typescript |
| | | export namespace MesWmSalesNoticeLineApi { |
| | | /** åè´§éç¥åè¡ */ |
| | | export interface SalesNoticeLine { |
| | | id?: number; // è¡ID |
| | | noticeId?: number; // éç¥åID |
| | | saleOrderItemId?: number; // éå®è®¢åæç»ID |
| | | itemId?: number; // ç©æID |
| | | itemCode?: string; // ç©æç¼ç |
| | | itemName?: string; // ç©æåç§° |
| | | specification?: string; // è§æ ¼åå· |
| | | unitMeasureName?: string; // åä½ |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | quantity?: number; // åè´§æ°é |
| | | outCount?: number; // å·²åºåºæ°é |
| | | oqcCheckFlag?: boolean; // æ¯å¦æ£éª |
| | | remark?: string; // 夿³¨ |
| | | createTime?: Date; // å建æ¶é´ |
| | | } |
| | | |
| | | /** å建/ä¿®æ¹è¯·æ± */ |
| | | export interface SalesNoticeLineSaveReq { |
| | | id?: number; // è¡IDï¼ä¿®æ¹æ¶å¿
å¡«ï¼ |
| | | noticeId: number; // éç¥åID |
| | | saleOrderItemId?: number; // éå®è®¢åæç»ID |
| | | itemId: number; // ç©æID |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | quantity: number; // åè´§æ°é |
| | | oqcCheckFlag?: boolean; // æ¯å¦æ£éª |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### ç¶ææä¸¾ |
| | | |
| | | ```typescript |
| | | // åè´§éç¥åç¶æ |
| | | const MesWmSalesNoticeStatusEnum = { |
| | | PREPARE: 0, // è稿 |
| | | APPROVED: 20, // å¾
åºåºï¼å·²å®¡æ ¸ï¼ |
| | | FINISHED: 30, // 已宿 |
| | | } |
| | | |
| | | // åè´§éç¥ååºåºç¶æ |
| | | const MesWmSalesNoticeOutStatusEnum = { |
| | | NONE: 0, // æªåºåº |
| | | PARTIAL: 1, // é¨ååºåº |
| | | ALL: 2, // å
¨é¨åºåº |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãéå®åºåºå (MES模å) |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/mes/wm/productsales/index.ts` |
| | | |
| | | ### æ¥è¯¢æ¥å£ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/mes/wm/product-sales/page` | å页æ¥è¯¢ | |
| | | | GET | `/mes/wm/product-sales/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | POST | `/mes/wm/product-sales/create` | å建 | |
| | | | PUT | `/mes/wm/product-sales/update` | ä¿®æ¹ | |
| | | | DELETE | `/mes/wm/product-sales/delete?id={id}` | å é¤ | |
| | | | PUT | `/mes/wm/product-sales/submit?id={id}` | æäº¤ | |
| | | | PUT | `/mes/wm/product-sales/stock?id={id}` | æ§è¡æ£è´§ | |
| | | | PUT | `/mes/wm/product-sales/shipping` | å¡«åè¿å | |
| | | | PUT | `/mes/wm/product-sales/finish?id={id}` | æ§è¡åºåº | |
| | | | PUT | `/mes/wm/product-sales/cancel?id={id}` | åæ¶ | |
| | | | GET | `/mes/wm/product-sales/check-quantity?id={id}` | æ ¡éªæ°é | |
| | | |
| | | ### æ¥å£å®ä¹ |
| | | |
| | | ```typescript |
| | | export namespace MesWmProductSalesApi { |
| | | /** éå®åºåºå */ |
| | | export interface ProductSales { |
| | | id?: number; // åºåºåID |
| | | code?: string; // åºåºåå· |
| | | name?: string; // åºåºååç§° |
| | | noticeId?: number; // åè´§éç¥åID |
| | | noticeCode?: string; // åè´§éç¥åå· |
| | | saleOrderId?: number; // éå®è®¢åID |
| | | salesOrderCode?: string; // éå®è®¢åå· |
| | | clientId?: number; // 客æ·ID |
| | | clientName?: string; // 客æ·åç§° |
| | | salesDate?: Date; // åºåºæ¥æ |
| | | contactName?: string; // è系人 |
| | | contactTelephone?: string; // èç³»çµè¯ |
| | | contactAddress?: string; // æ¶è´§å°å |
| | | carrier?: string; // æ¿è¿å |
| | | shippingNumber?: string; // è¿è¾åå· |
| | | status?: number; // åæ®ç¶æ |
| | | remark?: string; // 夿³¨ |
| | | createTime?: Date; // å建æ¶é´ |
| | | } |
| | | |
| | | /** å建/ä¿®æ¹è¯·æ± */ |
| | | export interface ProductSalesSaveReq { |
| | | id?: number; // åºåºåIDï¼ä¿®æ¹æ¶å¿
å¡«ï¼ |
| | | code: string; // åºåºåå· |
| | | name: string; // åºåºååç§° |
| | | clientId: number; // 客æ·ID |
| | | noticeId?: number; // åè´§éç¥åID |
| | | saleOrderId?: number; // éå®è®¢åID |
| | | salesOrderCode?: string; // éå®è®¢åå· |
| | | salesDate?: Date; // åºåºæ¥æ |
| | | contactName?: string; // è系人 |
| | | contactTelephone?: string; // èç³»çµè¯ |
| | | contactAddress?: string; // æ¶è´§å°å |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | |
| | | /** å¡«åè¿åè¯·æ± */ |
| | | export interface ProductSalesShippingReq { |
| | | id: number; // åºåºåID |
| | | carrier: string; // æ¿è¿å |
| | | shippingNumber: string; // è¿è¾åå· |
| | | } |
| | | } |
| | | |
| | | /** æ¥è¯¢å页 */ |
| | | export function getProductSalesPage(params: PageParam): Promise<PageResult<ProductSales>> |
| | | |
| | | /** æ¥è¯¢è¯¦æ
*/ |
| | | export function getProductSales(id: number): Promise<ProductSales> |
| | | |
| | | /** å建éå®åºåºå */ |
| | | export function createProductSales(data: ProductSalesSaveReq): Promise<number> |
| | | |
| | | /** ä¿®æ¹éå®åºåºå */ |
| | | export function updateProductSales(data: ProductSalesSaveReq): Promise<boolean> |
| | | |
| | | /** å é¤éå®åºåºå */ |
| | | export function deleteProductSales(id: number): Promise<boolean> |
| | | |
| | | /** æäº¤ */ |
| | | export function submitProductSales(id: number): Promise<boolean> |
| | | |
| | | /** æ§è¡æ£è´§ */ |
| | | export function stockProductSales(id: number): Promise<boolean> |
| | | |
| | | /** å¡«åè¿å */ |
| | | export function shippingProductSales(data: ProductSalesShippingReq): Promise<boolean> |
| | | |
| | | /** æ§è¡åºåº */ |
| | | export function finishProductSales(id: number): Promise<boolean> |
| | | |
| | | /** åæ¶ */ |
| | | export function cancelProductSales(id: number): Promise<boolean> |
| | | |
| | | /** æ ¡éªæ°é */ |
| | | export function checkProductSalesQuantity(id: number): Promise<boolean> |
| | | ``` |
| | | |
| | | ### è¡è¡¨æ¥å£ |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/mes/wm/productsales/line/index.ts` |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/mes/wm/product-sales-line/page` | å页æ¥è¯¢ | |
| | | | GET | `/mes/wm/product-sales-line/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | POST | `/mes/wm/product-sales-line/create` | å建 | |
| | | | PUT | `/mes/wm/product-sales-line/update` | ä¿®æ¹ | |
| | | | DELETE | `/mes/wm/product-sales-line/delete?id={id}` | å é¤ | |
| | | |
| | | ```typescript |
| | | export namespace MesWmProductSalesLineApi { |
| | | /** éå®åºåºåè¡ */ |
| | | export interface ProductSalesLine { |
| | | id?: number; // è¡ID |
| | | salesId?: number; // åºåºåID |
| | | noticeLineId?: number; // åè´§éç¥åè¡ID |
| | | saleOrderItemId?: number; // éå®è®¢åæç»ID |
| | | itemId?: number; // ç©æID |
| | | itemCode?: string; // ç©æç¼ç |
| | | itemName?: string; // ç©æåç§° |
| | | specification?: string; // è§æ ¼åå· |
| | | unitMeasureName?: string; // åä½ |
| | | quantity?: number; // åºåºæ°é |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | oqcCheckFlag?: boolean; // æ¯å¦æ£éª |
| | | oqcId?: number; // åºåæ£éªåID |
| | | qualityStatus?: number; // è´¨éç¶æ |
| | | remark?: string; // 夿³¨ |
| | | createTime?: Date; // å建æ¶é´ |
| | | } |
| | | |
| | | /** å建/ä¿®æ¹è¯·æ± */ |
| | | export interface ProductSalesLineSaveReq { |
| | | id?: number; // è¡IDï¼ä¿®æ¹æ¶å¿
å¡«ï¼ |
| | | salesId: number; // åºåºåID |
| | | noticeLineId?: number; // åè´§éç¥åè¡ID |
| | | saleOrderItemId?: number; // éå®è®¢åæç»ID |
| | | itemId: number; // ç©æID |
| | | quantity: number; // åºåºæ°é |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | oqcCheckFlag?: boolean; // æ¯å¦æ£éª |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### æç»è¡¨æ¥å£ï¼æ£è´§ä¿¡æ¯ï¼ |
| | | |
| | | **æä»¶è·¯å¾ï¼** `src/api/mes/wm/productsales/detail/index.ts` |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | GET | `/mes/wm/product-sales-detail/page` | å页æ¥è¯¢ | |
| | | | GET | `/mes/wm/product-sales-detail/get?id={id}` | 详æ
æ¥è¯¢ | |
| | | | POST | `/mes/wm/product-sales-detail/create` | å建 | |
| | | | PUT | `/mes/wm/product-sales-detail/update` | ä¿®æ¹ | |
| | | | DELETE | `/mes/wm/product-sales-detail/delete?id={id}` | å é¤ | |
| | | |
| | | ```typescript |
| | | export namespace MesWmProductSalesDetailApi { |
| | | /** éå®åºåºæç»ï¼æ£è´§ä¿¡æ¯ï¼ */ |
| | | export interface ProductSalesDetail { |
| | | id?: number; // æç»ID |
| | | lineId?: number; // åºåºåè¡ID |
| | | salesId?: number; // åºåºåID |
| | | itemId?: number; // ç©æID |
| | | itemCode?: string; // ç©æç¼ç |
| | | itemName?: string; // ç©æåç§° |
| | | specification?: string; // è§æ ¼åå· |
| | | unitMeasureName?: string; // åä½ |
| | | quantity?: number; // æ£è´§æ°é |
| | | materialStockId?: number; // åºåè®°å½ID |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | warehouseId?: number; // ä»åºID |
| | | warehouseName?: string; // ä»åºåç§° |
| | | locationId?: number; // åºåºID |
| | | locationName?: string; // åºåºåç§° |
| | | areaId?: number; // åºä½ID |
| | | areaName?: string; // åºä½åç§° |
| | | remark?: string; // 夿³¨ |
| | | createTime?: Date; // å建æ¶é´ |
| | | } |
| | | |
| | | /** å建/ä¿®æ¹è¯·æ± */ |
| | | export interface ProductSalesDetailSaveReq { |
| | | id?: number; // æç»IDï¼ä¿®æ¹æ¶å¿
å¡«ï¼ |
| | | lineId: number; // åºåºåè¡ID |
| | | salesId: number; // åºåºåID |
| | | itemId: number; // ç©æID |
| | | quantity: number; // æ£è´§æ°é |
| | | materialStockId?: number; // åºåè®°å½ID |
| | | batchId?: number; // æ¹æ¬¡ID |
| | | batchCode?: string; // æ¹æ¬¡å· |
| | | warehouseId: number; // ä»åºID |
| | | locationId: number; // åºåºID |
| | | areaId: number; // åºä½ID |
| | | remark?: string; // 夿³¨ |
| | | } |
| | | } |
| | | ``` |
| | | |
| | | ### ç¶ææä¸¾ |
| | | |
| | | ```typescript |
| | | // éå®åºåºåç¶æ |
| | | const MesWmProductSalesStatusEnum = { |
| | | PREPARE: 0, // è稿 |
| | | CONFIRMED: 10, // å¾
æ£æµ |
| | | APPROVING: 20, // å¾
æ£è´§ |
| | | SHIPPING: 25, // å¾
å¡«åè¿å |
| | | APPROVED: 30, // å¾
æ§è¡åºåº |
| | | FINISHED: 40, // 已宿 |
| | | CANCELLED: 50, // 已忶 |
| | | } |
| | | |
| | | // è´¨éç¶æ |
| | | const MesWmQualityStatusEnum = { |
| | | PENDING: 0, // å¾
æ£éª |
| | | PASS: 1, // åæ ¼ |
| | | FAIL: 2, // ä¸åæ ¼ |
| | | } |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## åãåæ®µæ å°å
³ç³» |
| | | |
| | | ### 4.1 éå®è®¢å â åè´§éç¥å |
| | | |
| | | | éå®è®¢ååæ®µ | åè´§éç¥ååæ®µ | 说æ | |
| | | |-------------|---------------|------| |
| | | | `id` | `saleOrderId` | éå®è®¢åID | |
| | | | `no` | `saleOrderCode` | éå®è®¢åå· | |
| | | | `customerId` | `clientId` | 客æ·ID | |
| | | | `customerName` | `clientName` | 客æ·åç§° | |
| | | |
| | | ### 4.2 åè´§éç¥å â éå®åºåºå |
| | | |
| | | | åè´§éç¥ååæ®µ | éå®åºåºååæ®µ | 说æ | |
| | | |---------------|---------------|------| |
| | | | `id` | `noticeId` | åè´§éç¥åID | |
| | | | `code` | `noticeCode` | åè´§éç¥åå· | |
| | | | `saleOrderId` | `saleOrderId` | éå®è®¢åID | |
| | | | `saleOrderCode` | `salesOrderCode` | éå®è®¢åå· | |
| | | | `clientId` | `clientId` | 客æ·ID | |
| | | | `clientName` | `clientName` | 客æ·åç§° | |
| | | | `recipientName` | `contactName` | æ¶è´§äººâè系人 | |
| | | | `recipientTelephone` | `contactTelephone` | èç³»çµè¯ | |
| | | | `recipientAddress` | `contactAddress` | æ¶è´§å°å | |
| | | | `salesDate` | `salesDate` | åºåºæ¥æ | |
| | | |
| | | ### 4.3 åè´§éç¥åè¡ â éå®åºåºåè¡ |
| | | |
| | | | åè´§éç¥åè¡å段 | éå®åºåºåè¡å段 | 说æ | |
| | | |-----------------|-----------------|------| |
| | | | `id` | `noticeLineId` | åè´§éç¥åè¡ID | |
| | | | `saleOrderItemId` | `saleOrderItemId` | éå®è®¢åæç»ID | |
| | | | `itemId` | `itemId` | ç©æID | |
| | | | `quantity` | `quantity` | åºåºæ°é | |
| | | | `batchId` | `batchId` | æ¹æ¬¡ID | |
| | | | `batchCode` | `batchCode` | æ¹æ¬¡å· | |
| | | | `oqcCheckFlag` | `oqcCheckFlag` | æ¯å¦æ£éª | |
| | | |
| | | --- |
| | | |
| | | ## äºãç¶ææµè½¬ |
| | | |
| | | ### 5.1 åæ®ç¶ææµè½¬ |
| | | |
| | | ``` |
| | | éå®è®¢åï¼æªå®¡æ ¸ â å·²å®¡æ ¸ â [åºåºç¶æåæ¥] |
| | | â |
| | | åè´§éç¥åï¼è稿 â å¾
åºåº â [é¨ååºåº/å
¨é¨åºåº] â 已宿 |
| | | â |
| | | éå®åºåºåï¼è稿 â æäº¤ â æ£è´§ â åè´§ â æ§è¡åºåº |
| | | â |
| | | [ç¶æåå䏿¸¸] |
| | | ``` |
| | | |
| | | ### 5.2 åºåºç¶ææ´æ°æ¶æº |
| | | |
| | | | 触åå¨ä½ | æ´æ°åæ® | æ´æ°å
容 | |
| | | |---------|---------|---------| |
| | | | éå®åºåºåæ§è¡åºåº | åè´§éç¥åè¡ | `outCount` ç´¯å | |
| | | | éå®åºåºåæ§è¡åºåº | åè´§éç¥å | `outStatus` æ´æ° | |
| | | | éå®åºåºåæ§è¡åºåº | éå®è®¢åè¡ | `outCount` ç´¯å | |
| | | | éå®åºåºåæ§è¡åºåº | éå®è®¢å | `outStatus` æ´æ° | |
| | | |
| | | ### 5.3 éå®åºåºå宿´ç¶ææµè½¬ |
| | | |
| | | ``` |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | â éå®åºåºåç¶ææµè½¬ â |
| | | ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⤠|
| | | â â |
| | | â è稿(PREPARE:0) â |
| | | â â â |
| | | â â æäº¤ â |
| | | â â¼ â |
| | | â âââââ´ââââ â |
| | | â â â â |
| | | â â â æOQCæ£éªè¡ âââ⺠å¾
æ£æµ(CONFIRMED:10) â |
| | | â â â â â |
| | | â â â â OQCæ£éªå®æ â |
| | | â â â â¼ â |
| | | â â â å¾
æ£è´§(APPROVING:20) ââââ â |
| | | â â â â â |
| | | â â â æ OQCæ£éªè¡ âââââââââââââââââââââââââââââââ â |
| | | â â â â |
| | | â âââââ¬ââââ â |
| | | â â â |
| | | â â æ§è¡æ£è´§ â |
| | | â â¼ â |
| | | â å¾
å¡«åè¿å(SHIPPING:25) â |
| | | â â â |
| | | â â å¡«åè¿å â |
| | | â â¼ â |
| | | â å¾
æ§è¡åºåº(APPROVED:30) â |
| | | â â â |
| | | â â æ§è¡åºåº â |
| | | â â¼ â |
| | | â 已宿(FINISHED:40) â |
| | | â â |
| | | â ä»»æç¶æ ââåæ¶âââº å·²åæ¶(CANCELLED:50) â |
| | | â â |
| | | âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## å
ãå端页é¢è·¯å¾ |
| | | |
| | | | é¡µé¢ | è·¯å¾ | æä»¶ | |
| | | |------|------|------| |
| | | | éå®è®¢åå表 | `/erp/sale/order` | `src/views/erp/sale/order/index.vue` | |
| | | | åè´§éç¥åå表 | `/wls/sales-notice` | `src/views/wls/salesnotice/index.vue` | |
| | | | éå®åºåºåå表 | `/wls/product-sales` | `src/views/wls/productsales/index.vue` | |
| | | |
| | | --- |
| | | |
| | | ## ä¸ãçææ¥å£è°ç¨é¾ |
| | | |
| | | ```typescript |
| | | // 1. éå®è®¢åçæåè´§éç¥å |
| | | const noticeId = await generateFromSaleOrder(saleOrderId); |
| | | |
| | | // 2. åè´§éç¥åçæéå®åºåºå |
| | | const productSalesId = await generateProductSales(noticeId); |
| | | |
| | | // 3. éå®åºåºåæäº¤ |
| | | await submitProductSales(productSalesId); |
| | | |
| | | // 4. æ§è¡æ£è´§ï¼éè¦å
æ·»å æ£è´§æç»ï¼ |
| | | await stockProductSales(productSalesId); |
| | | |
| | | // 5. å¡«åè¿å |
| | | await shippingProductSales({ id: productSalesId, carrier: '顺丰', shippingNumber: 'SF123' }); |
| | | |
| | | // 6. æ§è¡åºåºï¼ä¼èªå¨ååç¶æå°åè´§éç¥ååéå®è®¢åï¼ |
| | | await finishProductSales(productSalesId); |
| | | ``` |
| | | |
| | | --- |
| | | |
| | | ## å
«ãå
³é®ä¸å¡è§å |
| | | |
| | | ### 8.1 çæè§å |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | åè´§éç¥åçææ¡ä»¶ | éå®è®¢åç¶æä¸º"å·²å®¡æ ¸" | |
| | | | éå®åºåºåçææ¡ä»¶ | åè´§éç¥åç¶æä¸º"å¾
åºåº" | |
| | | | çæåç¶æ | å为"è稿"ç¶æï¼éè¦æäº¤åæè½æµè½¬ | |
| | | |
| | | ### 8.2 åºåºå®æåçç¶æåå |
| | | |
| | | | åå对象 | ååå
容 | |
| | | |---------|---------| |
| | | | åè´§éç¥åè¡ | `outCount += å®é
åºåºæ°é` | |
| | | | åè´§éç¥å | `outStatus = 计ç®ç»æï¼0/1/2ï¼` | |
| | | | åè´§éç¥å | 妿 `outStatus === 2`ï¼å
¨é¨åºåºï¼ï¼å `status = 30`ï¼å·²å®æï¼ | |
| | | | ERPéå®è®¢åè¡ | `outCount += å®é
åºåºæ°é` | |
| | | | ERPéå®è®¢å | `outStatus = 计ç®ç»æï¼0/1/2ï¼` | |
| | | |
| | | ### 8.3 åºåºæ°é计ç®é»è¾ |
| | | |
| | | ```typescript |
| | | // 计ç®åºåºç¶æ |
| | | function calculateOutStatus(lines: SalesNoticeLine[]): number { |
| | | let allOut = true; |
| | | let anyOut = false; |
| | | |
| | | for (const line of lines) { |
| | | const quantity = line.quantity || 0; |
| | | const outCount = line.outCount || 0; |
| | | |
| | | if (outCount > 0) anyOut = true; |
| | | if (outCount < quantity) allOut = false; |
| | | } |
| | | |
| | | if (allOut) return 2; // å
¨é¨åºåº |
| | | if (anyOut) return 1; // é¨ååºåº |
| | | return 0; // æªåºåº |
| | | } |
| | | ``` |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # åºåç°æéèªå®ä¹åºå
¥åº - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - åºåç°æéå表页 |
| | | - åºåè°æ´å¼¹çª/å¯¹è¯æ¡ |
| | | |
| | | ## ä¸å¡åºæ¯ |
| | | |
| | | åºåç°æéæ¨¡åæ°å¢èªå®ä¹åºå
¥åºåè½ï¼ç¨äºï¼ |
| | | - åºåçç¹è°æ´ |
| | | - åºåæè/æ¥æº¢ |
| | | - æå¨å
¥åº/åºåº |
| | | - å
¶ä»éä¸å¡åæ®é©±å¨çåºååå¨ |
| | | |
| | | ## æ°å¢ API |
| | | |
| | | ### åºåè°æ´ï¼èªå®ä¹åºå
¥åºï¼ |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/material-stock/adjust | åºåè°æ´ï¼æ£æ°=å
¥åºï¼è´æ°=åºåºï¼ | |
| | | |
| | | **请æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | itemId | Long | æ¯ | ç©æID | |
| | | | warehouseId | Long | æ¯ | ä»åºID | |
| | | | locationId | Long | æ¯ | åºåºID | |
| | | | areaId | Long | æ¯ | åºä½ID | |
| | | | batchId | Long | å¦ | æ¹æ¬¡ID | |
| | | | batchCode | String | å¦ | æ¹æ¬¡å· | |
| | | | vendorId | Long | å¦ | ä¾åºåID | |
| | | | quantity | BigDecimal | æ¯ | è°æ´æ°éï¼æ£æ°=å
¥åºï¼è´æ°=åºåºï¼ | |
| | | | reason | String | å¦ | è°æ´åå | |
| | | |
| | | **ååºï¼** |
| | | |
| | | ```json |
| | | { |
| | | "code": 0, |
| | | "data": 123, // åºåè®°å½ID |
| | | "msg": "æä½æå" |
| | | } |
| | | ``` |
| | | |
| | | ## å端修æ¹ç¹ |
| | | |
| | | ### 1. åºåç°æéå表页 |
| | | |
| | | å¨å表页工å
·æ æ·»å "åºåè°æ´"æé®ï¼ |
| | | |
| | | **æé®é»è¾ï¼** |
| | | 1. ç¹å»æå¼åºåè°æ´å¼¹çª |
| | | 2. å¼¹çªå
å¡«åè°æ´ä¿¡æ¯ |
| | | |
| | | ### 2. åºåè°æ´å¼¹çª |
| | | |
| | | **表ååæ®µï¼** |
| | | |
| | | | åæ®µ | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | ç©æ | éæ©å¨ | æ¯ | å¼¹åºç©æéæ©å¯¹è¯æ¡ | |
| | | | ä»åº | éæ©å¨ | æ¯ | 䏿鿩ä»åº | |
| | | | åºåº | éæ©å¨ | æ¯ | æ ¹æ®ä»åºèå¨å è½½åºåº | |
| | | | åºä½ | éæ©å¨ | æ¯ | æ ¹æ®åºåºèå¨å è½½åºä½ | |
| | | | æ¹æ¬¡ | éæ©å¨ | å¦ | å¼¹åºæ¹æ¬¡éæ©å¯¹è¯æ¡ï¼å¦æç©æå¯ç¨æ¹æ¬¡ç®¡çï¼ | |
| | | | ä¾åºå | éæ©å¨ | å¦ | 䏿鿩ä¾åºå | |
| | | | è°æ´æ°é | æ°åè¾å
¥ | æ¯ | æ£æ°=å
¥åºï¼è´æ°=åºåº | |
| | | | è°æ´åå | ææ¬è¾å
¥ | å¦ | å¡«åè°æ´åå | |
| | | |
| | | **èå¨é»è¾ï¼** |
| | | |
| | | 1. éæ©ä»åºåï¼å 载该ä»åºä¸çåºåºå表 |
| | | 2. éæ©åºåºåï¼å 载该åºåºä¸çåºä½å表 |
| | | 3. éæ©ç©æåï¼ |
| | | - å¦æç©æå¯ç¨æ¹æ¬¡ç®¡çï¼batchCode=trueï¼ï¼æ¹æ¬¡å段æ¾ç¤ºå¹¶å¿
å¡« |
| | | - å¦æç©ææªå¯ç¨æ¹æ¬¡ç®¡çï¼æ¹æ¬¡å段éè |
| | | |
| | | **æäº¤é»è¾ï¼** |
| | | |
| | | 1. æ ¡éªå¿
å¡«åæ®µ |
| | | 2. è°ç¨ API `/mes/wm/material-stock/adjust` |
| | | 3. æååæç¤º"è°æ´æå"ï¼å·æ°å表页 |
| | | 4. å¤±è´¥æ¶æ¾ç¤ºéè¯¯ä¿¡æ¯ |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | å
¥åºï¼quantity > 0ï¼ | èªå¨å建åºåè®°å½ï¼å¦æä¸åå¨ï¼ï¼å¢å åºåæ°é | |
| | | | åºåºï¼quantity < 0ï¼ | æ ¡éªåºåè®°å½åå¨ä¸æ°éå
è¶³ï¼æ£ååºåæ°é | |
| | | | æ¹æ¬¡ç®¡ç | ç©æå¯ç¨æ¹æ¬¡ç®¡çæ¶ï¼å¿
é¡»éæ©æ¹æ¬¡ | |
| | | | åºä½æ··æ¾ | æ ¹æ®åºä½é
ç½®çæ··æ¾è§åæ ¡éª | |
| | | |
| | | ## åºåäºå¡æµæ°´ |
| | | |
| | | è°æ´æä½ä¼èªå¨çæåºåäºå¡æµæ°´ï¼ |
| | | |
| | | | åæ®µ | å
¥åº | åºåº | |
| | | |------|------|------| |
| | | | type | IN (å
¥åº) | OUT (åºåº) | |
| | | | bizType | WM_STOCK_ADJUST_IN (126) | WM_STOCK_ADJUST_OUT (127) | |
| | | | bizId | åºåè®°å½ID | åºåè®°å½ID | |
| | | | bizCode | STOCK_ADJUST_{åºåID} | STOCK_ADJUST_{åºåID} | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - è°æ´æ°éä¸è½ä¸º0 |
| | | - åºåºæ¶å¿
é¡»ä¿è¯åºåå
è¶³ |
| | | - è°æ´æä½ä¼è®°å½åºåäºå¡æµæ°´ï¼ä¾¿äºè¿½æº¯ |
| | | - 建议å¨è°æ´åå ä¸å¡«å详ç»çè°æ´åå ï¼ä¾¿äºåç»æ¥è¯¢å审计 |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # åè´§éç¥åçæéå®åºåºå - å端èè°æ¹æ¡ |
| | | |
| | | ## æ¶åé¡µé¢ |
| | | |
| | | - åè´§éç¥åå表页 |
| | | - åè´§éç¥å详æ
页 |
| | | - éå®åºåºåå表页 |
| | | - éå®åºåºå详æ
页 |
| | | |
| | | ## ä¸å¡æµç¨ |
| | | |
| | | ``` |
| | | éå®è®¢å â åè´§éç¥å â éå®åºåºå â åºåºå®æ |
| | | â â â â |
| | | åºåºç¶æåæ¥ åºåºç¶æåæ¥ æ§è¡åºåº ç¶æåå䏿¸¸ |
| | | ``` |
| | | |
| | | **ç¶æåæ¥è§åï¼** |
| | | |
| | | | 触åå¨ä½ | 䏿¸¸åæ® | æ´æ°å
容 | |
| | | |----------|----------|----------| |
| | | | éå®åºåºåæ§è¡åºåº | åè´§éç¥åè¡ | ç´¯å outCountï¼å·²åºåºæ°éï¼ | |
| | | | éå®åºåºåæ§è¡åºåº | åè´§éç¥å | æ´æ° outStatusï¼åºåºç¶æï¼ï¼å
¨é¨åºåºæ¶ status å为"已宿" | |
| | | | éå®åºåºåæ§è¡åºåº | ERPéå®è®¢åè¡ | ç´¯å outCountï¼åºåºæ°éï¼ | |
| | | | éå®åºåºåæ§è¡åºåº | ERPéå®è®¢å | æ´æ° outStatusï¼åºåºç¶æï¼ | |
| | | |
| | | **æ°æ®å¸¦å
¥è§åï¼** |
| | | |
| | | | æºåæ® | ç®æ åæ® | 带å
¥å段 | |
| | | |--------|----------|----------| |
| | | | åè´§éç¥å | éå®åºåºå | 客æ·ãéå®è®¢åå·ãæ¶è´§äººãèç³»çµè¯ãæ¶è´§å°å | |
| | | | åè´§éç¥åè¡ | éå®åºåºåè¡ | ç©æãæ°éãæ¹æ¬¡ãæ¯å¦æ£éª | |
| | | |
| | | ## æ°å¢ API |
| | | |
| | | ### ä»åè´§éç¥åçæéå®åºåºå |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/sales-notice/generate-product-sales | ä»åè´§éç¥åçæéå®åºåºå | |
| | | |
| | | **请æ±åæ°ï¼** |
| | | |
| | | | åæ° | ç±»å | å¿
å¡« | 说æ | |
| | | |------|------|------|------| |
| | | | id | Long | æ¯ | åè´§éç¥åIDï¼Queryåæ°ï¼ | |
| | | |
| | | **ååºï¼** |
| | | |
| | | ```json |
| | | { |
| | | "code": 0, |
| | | "data": 123, // æ°çæçéå®åºåºåID |
| | | "msg": "æä½æå" |
| | | } |
| | | ``` |
| | | |
| | | ## æ°å¢å段 |
| | | |
| | | ### åè´§éç¥å主表æ°å¢å段 |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | outStatus | Integer | åºåºç¶æï¼0-æªåºåºï¼1-é¨ååºåºï¼2-å
¨é¨åºåº | |
| | | |
| | | ### åè´§éç¥åè¡æ°å¢å段 |
| | | |
| | | | åæ®µ | ç±»å | 说æ | |
| | | |------|------|------| |
| | | | outCount | Decimal | å·²åºåºæ°é | |
| | | |
| | | ## å端修æ¹ç¹ |
| | | |
| | | ### 1. åè´§éç¥åå表页/详æ
页 |
| | | |
| | | å¨"å¾
åºåº"ç¶æçåè´§éç¥å䏿·»å "çæåºåºå"æé®ï¼ |
| | | |
| | | **æé®æ¾ç¤ºæ¡ä»¶ï¼** |
| | | - åæ®ç¶æ = å¾
åºåºï¼status = 20ï¼ |
| | | |
| | | **æé®ç¹å»é»è¾ï¼** |
| | | 1. è°ç¨ API `/mes/wm/sales-notice/generate-product-sales?id={noticeId}` |
| | | 2. æååæç¤º"çææå"ï¼è·³è½¬å°éå®åºåºå详æ
页 |
| | | 3. å¤±è´¥æ¶æ¾ç¤ºéè¯¯ä¿¡æ¯ |
| | | |
| | | **å表æ¾ç¤ºæ°å¢ï¼** |
| | | - åºåºç¶æåï¼æ¾ç¤º"æªåºåº"/"é¨ååºåº"/"å
¨é¨åºåº" |
| | | |
| | | ### 2. åè´§éç¥åè¡å表 |
| | | |
| | | **æ¾ç¤ºæ°å¢ï¼** |
| | | - å·²åºåºæ°éåï¼æ¾ç¤ºæ¯è¡çå·²åºåºæ°é |
| | | - åºåºè¿åº¦åï¼æ¾ç¤º å·²åºåºæ°é/æ»æ°é çè¿åº¦æ¡ææå |
| | | |
| | | ### 3. éå®åºåºå详æ
页 |
| | | |
| | | ä»åè´§éç¥åçæçéå®åºåºåï¼ä»¥ä¸å段已èªå¨å¡«å
ï¼ |
| | | - åºæ¬ä¿¡æ¯ï¼åºåºåå·ã客æ·ãéå®è®¢åå·ãåºåºæ¥æ |
| | | - æ¶è´§ä¿¡æ¯ï¼è系人ãèç³»çµè¯ãæ¶è´§å°å |
| | | - è¡ä¿¡æ¯ï¼ç©æãæ°éãæ¹æ¬¡ãæ¯å¦æ£éª |
| | | |
| | | **注æï¼** æ£è´§æç»éè¦æå¨æ·»å |
| | | |
| | | ## åæ®µæ å°è¡¨ |
| | | |
| | | ### ä¸»è¡¨åæ®µæ å° |
| | | |
| | | | åè´§éç¥ååæ®µ | éå®åºåºååæ®µ | 说æ | |
| | | |----------------|----------------|------| |
| | | | clientId | clientId | 客æ·ID | |
| | | | saleOrderId | saleOrderId | éå®è®¢åID | |
| | | | saleOrderCode | salesOrderCode | éå®è®¢åå· | |
| | | | salesDate | salesDate | åºåºæ¥æ | |
| | | | recipientName | contactName | æ¶è´§äºº â è系人 | |
| | | | recipientTelephone | contactTelephone | èç³»çµè¯ | |
| | | | recipientAddress | contactAddress | æ¶è´§å°å | |
| | | |
| | | ### è¡è¡¨å段æ å° |
| | | |
| | | | åè´§éç¥åè¡å段 | éå®åºåºåè¡å段 | 说æ | |
| | | |------------------|------------------|------| |
| | | | saleOrderItemId | saleOrderItemId | éå®è®¢åæç»ID | |
| | | | itemId | itemId | ç©æID | |
| | | | quantity | quantity | åºåºæ°é | |
| | | | batchId | batchId | æ¹æ¬¡ID | |
| | | | batchCode | batchCode | æ¹æ¬¡å· | |
| | | | oqcCheckFlag | oqcCheckFlag | æ¯å¦æ£éª | |
| | | |
| | | ## ä¸å¡è§å说æ |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | çææ¡ä»¶ | åè´§éç¥åç¶æå¿
须为"å¾
åºåº" | |
| | | | çæåç¶æ | éå®åºåºåç¶æä¸º"è稿" | |
| | | | å
³èå
³ç³» | éå®åºåºåç noticeId å
³èåè´§éç¥åç id | |
| | | | åºåºå®æ | ç´¯å åè´§éç¥åè¡ç outCountï¼è®¡ç®ä¸»å outStatus | |
| | | | å
¨é¨åºåº | åè´§éç¥å outStatus=2 æ¶ï¼status èªå¨å为"已宿" | |
| | | |
| | | ## åºåºç¶ææä¸¾ |
| | | |
| | | | å¼ | åç§° | 说æ | |
| | | |----|------|------| |
| | | | 0 | æªåºåº | ææè¡ç outCount = 0 | |
| | | | 1 | é¨ååºåº | é¨åè¡å·²åºåºï¼æé¨åæ°éå·²åºåº | |
| | | | 2 | å
¨é¨åºåº | ææè¡ç outCount >= quantity | |
| | | |
| | | ## 注æäºé¡¹ |
| | | |
| | | - ä¸ä¸ªåè´§éç¥åå¯ä»¥çæå¤ä¸ªéå®åºåºåï¼é¨ååºåºåºæ¯ï¼ |
| | | - çæçéå®åºåºå为èç¨¿ç¶æï¼éè¦æäº¤åæè½æ§è¡æ£è´§ãåºåºæä½ |
| | | - æ£è´§æç»éè¦æå¨æ·»å ï¼æå®ä»åªä¸ªä»åºãåºåºãåºä½æ£è´§ |
| | | - 妿åè´§éç¥åè¡æ"æ¯å¦æ£éª"æ è¯ï¼éå®åºåºåæäº¤åä¼è¿å
¥"å¾
æ£æµ"ç¶æ |
| | | - åºåºå®æåä¼èªå¨åæ¥ç¶æå°åè´§éç¥åå ERP éå®è®¢å |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | # éå®åºåºæµç¨æ°æ®å¸¦å
¥ä¸æ¥è¯¢æ¹æ¡ |
| | | |
| | | ## ä¸ãæ´ä½æµç¨ |
| | | |
| | | ``` |
| | | âââââââââââââââ âââââââââââââââ âââââââââââââââ âââââââââââââââ |
| | | â éå®è®¢å ââââ>â åè´§éç¥å ââââ>â éå®åºåºå ââââ>â åºåºå®æ â |
| | | â (ERP模å) â â (MES模å) â â (MES模å) â â ç¶æåå â |
| | | âââââââââââââââ âââââââââââââââ âââââââââââââââ âââââââââââââââ |
| | | â â â â |
| | | â¼ â¼ â¼ â¼ |
| | | åºåºç¶æåæ¥ åºåºç¶æåæ¥ æ§è¡åºåº ç¶æåå䏿¸¸ |
| | | ``` |
| | | |
| | | ## äºãåæ®å±çº§ç»æ |
| | | |
| | | ### 1. åè´§éç¥åï¼mes_wm_sales_noticeï¼ |
| | | |
| | | | å±çº§ | 表å | 说æ | |
| | | |------|------|------| |
| | | | 主表 | mes_wm_sales_notice | åè´§éç¥ååºæ¬ä¿¡æ¯ | |
| | | | è¡è¡¨ | mes_wm_sales_notice_line | æç©æç»´åº¦çåè´§æç» | |
| | | |
| | | ### 2. éå®åºåºåï¼mes_wm_product_salesï¼ |
| | | |
| | | | å±çº§ | 表å | 说æ | |
| | | |------|------|------| |
| | | | 主表 | mes_wm_product_sales | åºåºååºæ¬ä¿¡æ¯ | |
| | | | è¡è¡¨ | mes_wm_product_sales_line | æç©æ/æ¹æ¬¡ç»´åº¦çåºåºè¡ | |
| | | | æç»è¡¨ | mes_wm_product_sales_detail | æ£è´§æç»ï¼å
·ä½ä»åº/åºåº/åºä½ | |
| | | |
| | | ## ä¸ãä¸ä¸æ¸¸æ°æ®å¸¦å
¥è§å |
| | | |
| | | ### 1. éå®è®¢å â åè´§éç¥å |
| | | |
| | | **主表带å
¥ï¼** |
| | | |
| | | | éå®è®¢ååæ®µ | åè´§éç¥ååæ®µ | 说æ | |
| | | |-------------|---------------|------| |
| | | | id | saleOrderId | éå®è®¢åID | |
| | | | no | saleOrderCode | éå®è®¢åå· | |
| | | | customerId | clientId | 客æ·ID | |
| | | |
| | | **è¡è¡¨å¸¦å
¥ï¼** |
| | | |
| | | | éå®è®¢åæç»å段 | åè´§éç¥åè¡å段 | 说æ | |
| | | |-----------------|-----------------|------| |
| | | | id | saleOrderItemId | éå®è®¢åæç»ID | |
| | | | productId | itemId | ç©æID | |
| | | | count | quantity | åè´§æ°é | |
| | | |
| | | **API è°ç¨ï¼** |
| | | - `ErpSaleOrderApi.getSaleOrder(saleOrderId)` - è·åéå®è®¢åä¿¡æ¯ |
| | | - `ErpSaleOrderApi.getSaleOrderItemList(saleOrderId)` - è·åéå®è®¢åæç»å表 |
| | | |
| | | ### 2. åè´§éç¥å â éå®åºåºå |
| | | |
| | | **主表带å
¥ï¼** |
| | | |
| | | | åè´§éç¥ååæ®µ | éå®åºåºååæ®µ | 说æ | |
| | | |---------------|---------------|------| |
| | | | id | noticeId | åè´§éç¥åID | |
| | | | clientId | clientId | 客æ·ID | |
| | | | saleOrderId | saleOrderId | éå®è®¢åID | |
| | | | saleOrderCode | salesOrderCode | éå®è®¢åå· | |
| | | | salesDate | salesDate | åºåºæ¥æ | |
| | | | recipientName | contactName | æ¶è´§äºº â è系人 | |
| | | | recipientTelephone | contactTelephone | èç³»çµè¯ | |
| | | | recipientAddress | contactAddress | æ¶è´§å°å | |
| | | |
| | | **è¡è¡¨å¸¦å
¥ï¼** |
| | | |
| | | | åè´§éç¥åè¡å段 | éå®åºåºåè¡å段 | 说æ | |
| | | |-----------------|-----------------|------| |
| | | | id | noticeLineId | åè´§éç¥åè¡ID | |
| | | | saleOrderItemId | saleOrderItemId | éå®è®¢åæç»ID | |
| | | | itemId | itemId | ç©æID | |
| | | | quantity | quantity | åºåºæ°é | |
| | | | batchId | batchId | æ¹æ¬¡ID | |
| | | | batchCode | batchCode | æ¹æ¬¡å· | |
| | | | oqcCheckFlag | oqcCheckFlag | æ¯å¦æ£éª | |
| | | |
| | | **注æï¼** |
| | | - éå®åºåºåæç»è¡¨ï¼æ£è´§ä¿¡æ¯ï¼éè¦æå¨æ·»å |
| | | - ä¸ä¸ªåè´§éç¥åå¯ä»¥çæå¤ä¸ªéå®åºåºåï¼é¨ååºåºåºæ¯ï¼ |
| | | |
| | | ## åãç¶æåæ¥æºå¶ |
| | | |
| | | ### 1. åºåºå®ææ¶çç¶æåå |
| | | |
| | | **è§¦åæ¶æºï¼** éå®åºåºåæ§è¡åºåºï¼finishProductSalesï¼ |
| | | |
| | | **ååæµç¨ï¼** |
| | | |
| | | ``` |
| | | éå®åºåºåè¡.noticeLineId â åè´§éç¥åè¡.outCountï¼ç´¯å ï¼ |
| | | â |
| | | 计ç®åè´§éç¥å.outStatus |
| | | â |
| | | å
¨é¨åºåºæ¶ â åè´§éç¥å.status = 已宿 |
| | | â |
| | | éå®åºåºåè¡.saleOrderItemId â ERPéå®è®¢åæç».outCountï¼ç´¯å ï¼ |
| | | â |
| | | 计ç®ERPéå®è®¢å.outStatus |
| | | ``` |
| | | |
| | | ### 2. åºåºç¶ææä¸¾ |
| | | |
| | | | å¼ | åç§° | 说æ | |
| | | |----|------|------| |
| | | | 0 | æªåºåº | ææè¡ç outCount = 0 | |
| | | | 1 | é¨ååºåº | é¨åè¡å·²åºåºï¼æé¨åæ°éå·²åºåº | |
| | | | 2 | å
¨é¨åºåº | ææè¡ç outCount >= quantity | |
| | | |
| | | ## äºãå
³èä¿¡æ¯æ¥è¯¢ |
| | | |
| | | ### 1. åè´§éç¥åæ¥è¯¢æ¶ |
| | | |
| | | **éè¦æ¥è¯¢çå
³èæ°æ®ï¼** |
| | | |
| | | | å
³è对象 | API/æ¹æ³ | ç¨é | |
| | | |---------|---------|------| |
| | | | 客æ·ä¿¡æ¯ | CrmCustomerApi.getCustomerMap(clientIds) | æ¾ç¤ºå®¢æ·åç§° | |
| | | | éå®è®¢å | ErpSaleOrderApi.getSaleOrder(saleOrderId) | æ¾ç¤ºè®¢åä¿¡æ¯ | |
| | | |
| | | ### 2. éå®åºåºåæ¥è¯¢æ¶ |
| | | |
| | | **éè¦æ¥è¯¢çå
³èæ°æ®ï¼** |
| | | |
| | | | å
³è对象 | API/æ¹æ³ | ç¨é | |
| | | |---------|---------|------| |
| | | | 客æ·ä¿¡æ¯ | CrmCustomerApi.getCustomerMap(clientIds) | æ¾ç¤ºå®¢æ·åç§° | |
| | | | åè´§éç¥å | SalesNoticeService.getSalesNoticeMap(noticeIds) | æ¾ç¤ºéç¥åç¼ç | |
| | | | ç©æä¿¡æ¯ | MesMdItemService.getItemMap(itemIds) | æ¾ç¤ºç©æç¼ç ãåç§°ãè§æ ¼åå· | |
| | | | æ¹æ¬¡ä¿¡æ¯ | MesWmBatchService.getBatchMap(batchIds) | æ¾ç¤ºæ¹æ¬¡å·ãçäº§æ¥æ | |
| | | | ä»åºä¿¡æ¯ | MesWmWarehouseService.getWarehouseMap(warehouseIds) | æ¾ç¤ºä»åºåç§° | |
| | | | åºåºä¿¡æ¯ | MesWmWarehouseLocationService.getLocationMap(locationIds) | æ¾ç¤ºåºåºåç§° | |
| | | | åºä½ä¿¡æ¯ | MesWmWarehouseAreaService.getAreaMap(areaIds) | æ¾ç¤ºåºä½åç§° | |
| | | |
| | | ### 3. ç©æä¿¡æ¯æ¥è¯¢ API |
| | | |
| | | ```java |
| | | // è·åç©æåºæ¬ä¿¡æ¯ |
| | | MesMdItemDO item = itemService.getItem(itemId); |
| | | |
| | | // æ¹éè·åç©æä¿¡æ¯ |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(itemIds); |
| | | |
| | | // æ ¡éªç©æåå¨ä¸å¯ç¨ |
| | | itemService.validateItemExistsAndEnable(itemId); |
| | | ``` |
| | | |
| | | **ç©æå
³é®ä¿¡æ¯ï¼** |
| | | |
| | | | åæ®µ | 说æ | |
| | | |------|------| |
| | | | id | ç©æID | |
| | | | code | ç©æç¼ç | |
| | | | name | ç©æåç§° | |
| | | | spec | è§æ ¼åå· | |
| | | | unitId | 主åä½ID | |
| | | | unitCode | 主åä½ç¼ç | |
| | | | batchCode | æ¯å¦æ¹æ¬¡ç®¡ç | |
| | | | qualityFlag | æ¯å¦è´¨æ£ | |
| | | |
| | | ## å
ãAPI æ¥å£æ¸
å |
| | | |
| | | ### 1. åè´§éç¥å API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/sales-notice/create | å建åè´§éç¥å | |
| | | | PUT | /mes/wm/sales-notice/update | ä¿®æ¹åè´§éç¥å | |
| | | | DELETE | /mes/wm/sales-notice/delete | å é¤åè´§éç¥å | |
| | | | GET | /mes/wm/sales-notice/get | è·ååè´§éç¥å详æ
| |
| | | | GET | /mes/wm/sales-notice/page | å页æ¥è¯¢åè´§éç¥å | |
| | | | PUT | /mes/wm/sales-notice/submit | æäº¤åè´§éç¥å | |
| | | | POST | /mes/wm/sales-notice/generate-from-sale-order | ä»éå®è®¢åçæ | |
| | | | POST | /mes/wm/sales-notice/generate-product-sales | çæéå®åºåºå | |
| | | |
| | | ### 2. éå®åºåºå API |
| | | |
| | | | æ¹æ³ | è·¯å¾ | 说æ | |
| | | |------|------|------| |
| | | | POST | /mes/wm/product-sales/create | å建éå®åºåºå | |
| | | | PUT | /mes/wm/product-sales/update | ä¿®æ¹éå®åºåºå | |
| | | | DELETE | /mes/wm/product-sales/delete | å é¤éå®åºåºå | |
| | | | GET | /mes/wm/product-sales/get | è·åéå®åºåºå详æ
| |
| | | | GET | /mes/wm/product-sales/page | å页æ¥è¯¢éå®åºåºå | |
| | | | PUT | /mes/wm/product-sales/submit | æäº¤éå®åºåºå | |
| | | | PUT | /mes/wm/product-sales/stock | æ§è¡æ£è´§ | |
| | | | PUT | /mes/wm/product-sales/shipping | å¡«åè¿å | |
| | | | PUT | /mes/wm/product-sales/finish | æ§è¡åºåº | |
| | | | PUT | /mes/wm/product-sales/cancel | åæ¶éå®åºåºå | |
| | | |
| | | ## ä¸ãå端å±ç¤ºå段 |
| | | |
| | | ### 1. åè´§éç¥åå表 |
| | | |
| | | | åæ®µ | æ¥æº | 说æ | |
| | | |------|------|------| |
| | | | code | mes_wm_sales_notice | éç¥åç¼ç | |
| | | | name | mes_wm_sales_notice | éç¥ååç§° | |
| | | | clientName | crm_customer | 客æ·åç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | saleOrderCode | mes_wm_sales_notice | éå®è®¢åå· | |
| | | | salesDate | mes_wm_sales_notice | åè´§æ¥æ | |
| | | | status | mes_wm_sales_notice | åæ®ç¶æ | |
| | | | outStatus | mes_wm_sales_notice | åºåºç¶æ | |
| | | |
| | | ### 2. åè´§éç¥åè¡å表 |
| | | |
| | | | åæ®µ | æ¥æº | 说æ | |
| | | |------|------|------| |
| | | | itemCode | mes_md_item | ç©æç¼ç ï¼å
³èæ¥è¯¢ï¼ | |
| | | | itemName | mes_md_item | ç©æåç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | itemSpec | mes_md_item | è§æ ¼åå·ï¼å
³èæ¥è¯¢ï¼ | |
| | | | batchCode | mes_wm_sales_notice_line | æ¹æ¬¡å· | |
| | | | quantity | mes_wm_sales_notice_line | åè´§æ°é | |
| | | | outCount | mes_wm_sales_notice_line | å·²åºåºæ°é | |
| | | | outProgress | è®¡ç® | åºåºè¿åº¦ = outCount / quantity | |
| | | | oqcCheckFlag | mes_wm_sales_notice_line | æ¯å¦æ£éª | |
| | | |
| | | ### 3. éå®åºåºåå表 |
| | | |
| | | | åæ®µ | æ¥æº | 说æ | |
| | | |------|------|------| |
| | | | code | mes_wm_product_sales | åºåºåç¼ç | |
| | | | name | mes_wm_product_sales | åºåºååç§° | |
| | | | clientName | crm_customer | 客æ·åç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | noticeCode | mes_wm_sales_notice | éç¥åç¼ç ï¼å
³èæ¥è¯¢ï¼ | |
| | | | salesOrderCode | mes_wm_product_sales | éå®è®¢åå· | |
| | | | salesDate | mes_wm_product_sales | åºåºæ¥æ | |
| | | | contactName | mes_wm_product_sales | è系人 | |
| | | | contactTelephone | mes_wm_product_sales | èç³»çµè¯ | |
| | | | status | mes_wm_product_sales | åæ®ç¶æ | |
| | | |
| | | ### 4. éå®åºåºåè¡å表 |
| | | |
| | | | åæ®µ | æ¥æº | 说æ | |
| | | |------|------|------| |
| | | | itemCode | mes_md_item | ç©æç¼ç ï¼å
³èæ¥è¯¢ï¼ | |
| | | | itemName | mes_md_item | ç©æåç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | batchCode | mes_wm_product_sales_line | æ¹æ¬¡å· | |
| | | | quantity | mes_wm_product_sales_line | åºåºæ°é | |
| | | | oqcCheckFlag | mes_wm_product_sales_line | æ¯å¦æ£éª | |
| | | | qualityStatus | mes_wm_product_sales_line | è´¨éç¶æ | |
| | | |
| | | ### 5. éå®åºåºæç»åè¡¨ï¼æ£è´§ä¿¡æ¯ï¼ |
| | | |
| | | | åæ®µ | æ¥æº | 说æ | |
| | | |------|------|------| |
| | | | itemCode | mes_md_item | ç©æç¼ç ï¼å
³èæ¥è¯¢ï¼ | |
| | | | batchCode | mes_wm_product_sales_detail | æ¹æ¬¡å· | |
| | | | quantity | mes_wm_product_sales_detail | æ£è´§æ°é | |
| | | | warehouseName | mes_wm_warehouse | ä»åºåç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | locationName | mes_wm_warehouse_location | åºåºåç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | | areaName | mes_wm_warehouse_area | åºä½åç§°ï¼å
³èæ¥è¯¢ï¼ | |
| | | |
| | | ## å
«ãä¸å¡è§å |
| | | |
| | | ### 1. çæè§å |
| | | |
| | | | åºæ¯ | è§å | |
| | | |------|------| |
| | | | åè´§éç¥åçææ¡ä»¶ | éå®è®¢åç¶æä¸º"å·²å®¡æ ¸" | |
| | | | éå®åºåºåçææ¡ä»¶ | åè´§éç¥åç¶æä¸º"å¾
åºåº" | |
| | | | çæåç¶æ | å为"è稿"ç¶æï¼éè¦æäº¤åæè½æµè½¬ | |
| | | |
| | | ### 2. æäº¤æ ¡éª |
| | | |
| | | | åæ® | æ ¡éªè§å | |
| | | |------|---------| |
| | | | åè´§éç¥å | è³å°æä¸æ¡è¡è®°å½ | |
| | | | éå®åºåºå | è³å°æä¸æ¡è¡è®°å½ï¼æ¯è¡åºåºæ°é > 0 | |
| | | |
| | | ### 3. åºåºæµç¨ |
| | | |
| | | ``` |
| | | è稿 â æäº¤ â å¾
æ£è´§ â æ£è´§ â å¾
å¡«åè¿å â å¡«åè¿å â å¾
åºåº â æ§è¡åºåº â 已宿 |
| | | â â |
| | | âââââââââââââ 妿éè¦OQCæ£éª ââââââââââââââââââââââââ |
| | | è稿 â æäº¤ â å¾
æ£æµ â OQCæ£éªå®æ â å¾
æ£è´§ |
| | | ``` |
| | | |
| | | ### 4. ç¶æååè§å |
| | | |
| | | | 触åå¨ä½ | åå对象 | ååå
容 | |
| | | |---------|---------|---------| |
| | | | æ§è¡åºåº | åè´§éç¥åè¡ | outCount += å®é
åºåºæ°é | |
| | | | æ§è¡åºåº | åè´§éç¥å | outStatus = 计ç®ç»æ | |
| | | | æ§è¡åºåº | åè´§éç¥å | 妿 outStatus=å
¨é¨åºåºï¼å status=已宿 | |
| | | | æ§è¡åºåº | ERPéå®è®¢åæç» | outCount += å®é
åºåºæ°é | |
| | | | æ§è¡åºåº | ERPéå®è®¢å | outStatus = 计ç®ç»æ | |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmArrivalNoticeLineService arrivalNoticeLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesQcIqcService iqcService; |
| | | |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmArrivalNoticeLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesQcIqcDO> iqcMap = iqcService.getIqcMap( |
| | | convertSet(list, MesWmArrivalNoticeLineDO::getIqcId)); |
| | | // 2. æå»ºç»æ |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchRespVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesMdVendorService vendorService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmBatchDO::getItemId)); |
| | | Map<Long, MesMdVendorDO> vendorMap = vendorService.getVendorMap( |
| | | convertSet(list, MesWmBatchDO::getVendorId)); |
| | |
| | | convertSet(list, MesWmBatchDO::getWorkstationId)); |
| | | Map<Long, MesTmToolDO> toolMap = toolService.getToolMap( |
| | | convertSet(list, MesWmBatchDO::getToolId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmBatchRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmItemConsumeLineService itemConsumeLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "æ ¹æ®æ¥å·¥ç¼å·å页è·åæ¶èè¡å表") |
| | |
| | | itemConsumeLineService.getItemConsumeLinePage(pageReqVO); |
| | | PageResult<MesWmItemConsumeLineRespVO> voPage = BeanUtils.toBean(pageResult, MesWmItemConsumeLineRespVO.class); |
| | | // 2. æ¼æ¥ç©æä¿¡æ¯ |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(pageResult.getList(), MesWmItemConsumeLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | for (MesWmItemConsumeLineRespVO vo : voPage.getList()) { |
| | | findAndThen(itemMap, vo.getItemId(), item -> { |
| | | vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.detail.MesWmItemReceiptDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.detail.MesWmItemReceiptDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmItemReceiptDetailService itemReceiptDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmItemReceiptDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmItemReceiptDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.itemreceipt.vo.line.MesWmItemReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.MesWmItemReceiptService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmItemReceiptLineService itemReceiptLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmItemReceiptService itemReceiptService; |
| | | |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmItemReceiptLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmItemReceiptDO> receiptMap = itemReceiptService.getItemReceiptMap( |
| | | convertSet(list, MesWmItemReceiptLineDO::getReceiptId)); |
| | | // 2. æå»ºç»æ |
| | |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.vendor.MesMdVendorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | |
| | | @Resource |
| | | private MesWmMaterialStockService materialStockService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return success(true); |
| | | } |
| | | |
| | | @PostMapping("/adjust") |
| | | @Operation(summary = "åºåè°æ´ï¼èªå®ä¹åºå
¥åºï¼") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:adjust')") |
| | | public CommonResult<Long> adjustMaterialStock(@Valid @RequestBody MesWmMaterialStockAdjustReqVO reqVO) { |
| | | return success(materialStockService.adjustMaterialStock(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/export-excel") |
| | | @Operation(summary = "导åºåºåå°è´¦ Excel") |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-material-stock:export')") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmMaterialStockDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmMaterialStockDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo; |
| | | |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * åºåè°æ´ï¼èªå®ä¹åºå
¥åºï¼Request VO |
| | | */ |
| | | @Schema(description = "管çåå° - åºåè°æ´ Request VO") |
| | | @Data |
| | | public class MesWmMaterialStockAdjustReqVO { |
| | | |
| | | @Schema(description = "ç©æID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| | | @NotNull(message = "ç©æIDä¸è½ä¸ºç©º") |
| | | private Long itemId; |
| | | |
| | | @Schema(description = "ä»åºID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| | | @NotNull(message = "ä»åºIDä¸è½ä¸ºç©º") |
| | | private Long warehouseId; |
| | | |
| | | @Schema(description = "åºåºID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| | | @NotNull(message = "åºåºIDä¸è½ä¸ºç©º") |
| | | private Long locationId; |
| | | |
| | | @Schema(description = "åºä½ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| | | @NotNull(message = "åºä½IDä¸è½ä¸ºç©º") |
| | | private Long areaId; |
| | | |
| | | @Schema(description = "æ¹æ¬¡ID", example = "1") |
| | | private Long batchId; |
| | | |
| | | @Schema(description = "æ¹æ¬¡å·", example = "BATCH001") |
| | | private String batchCode; |
| | | |
| | | @Schema(description = "ä¾åºåID", example = "1") |
| | | private Long vendorId; |
| | | |
| | | @Schema(description = "è°æ´æ°éï¼æ£æ°=å
¥åºï¼è´æ°=åºåºï¼", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") |
| | | @NotNull(message = "è°æ´æ°éä¸è½ä¸ºç©º") |
| | | private BigDecimal quantity; |
| | | |
| | | @Schema(description = "è°æ´åå ", example = "çç¹è°æ´") |
| | | private String reason; |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.miscissue.MesWmMiscIssueLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmMiscIssueLineService miscIssueLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmMiscIssueLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmMiscIssueLineDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = warehouseLocationService.getWarehouseLocationMap( |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | |
| | | @Resource |
| | | private MesWmMiscReceiptLineService miscReceiptLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmMiscReceiptLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmMiscReceiptLineDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = warehouseLocationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.detail.MesWmOutsourceIssueDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmOutsourceIssueDetailService outsourceIssueDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmOutsourceIssueDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmOutsourceIssueDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourceissue.vo.line.MesWmOutsourceIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.outsourceissue.MesWmOutsourceIssueLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | import java.util.Set; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | |
| | | @Resource |
| | | private MesWmOutsourceIssueLineService outsourceIssueLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmOutsourceIssueLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 1.2 è·å¾æ¹æ¬¡æ°æ® |
| | | Set<Long> batchIds = convertSet(list, MesWmOutsourceIssueLineDO::getBatchId); |
| | | batchIds.remove(null); |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmOutsourceReceiptDetailService detailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmOutsourceReceiptDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmOutsourceReceiptDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.line.MesWmOutsourceReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmOutsourceReceiptLineService receiptLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建å¤åå
¥åºåè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmOutsourceReceiptLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmOutsourceReceiptLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | |
| | | @Resource |
| | | private MesMdClientService clientService; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | |
| | | Map<Long, MesMdClientDO> clientMap = clientService.getClientMap( |
| | | convertSet(list, MesWmPackageDO::getClientId)); |
| | | // æ¹éæ¥è¯¢è®¡éåä½ï¼å°ºå¯¸ + ééï¼ |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSetByFlatMap(list, p -> Stream.of(p.getSizeUnitId(), p.getWeightUnitId()))); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSetByFlatMap(list, p -> Stream.of(p.getSizeUnitId(), p.getWeightUnitId()))).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // æ¹éæ¥è¯¢æ£æ¥å |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| | | convertSet(list, MesWmPackageDO::getInspectorUserId)); |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmPackageLineService packageLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // æ¹éæ¥è¯¢ç©æ |
| | | Map<Long, MesMdItemDO> itemMap = itemService |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi |
| | | .getItemMap(convertSet(list, MesWmPackageLineDO::getItemId)); |
| | | // æ¹éæ¥è¯¢è®¡éåä½ |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // æ¹éæ¥è¯¢å·¥å |
| | | Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap( |
| | | convertSet(list, MesWmPackageLineDO::getWorkOrderId)); |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail.MesWmProductIssueDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail.MesWmProductIssueDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductIssueDetailService issueDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductIssueDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmProductIssueDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductIssueLineService issueLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "åå»ºé¢æåºåºåè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductIssueLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmProductIssueLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productproduce.vo.MesWmProductProduceLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductProduceLineService productProduceLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @GetMapping("/page") |
| | | @Operation(summary = "è·å¾ç产å
¥åºåè¡å页") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductProduceLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmProductProduceLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "åå»ºäº§åæ¶è´§å") |
| | |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesProWorkOrderDO> workOrderMap = workOrderService.getWorkOrderMap( |
| | | convertSet(list, MesWmProductReceiptDO::getWorkOrderId)); |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductReceiptDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmProductReceiptRespVO.class, vo -> { |
| | | MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductReceiptDetailService productReceiptDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductReceiptDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmProductReceiptDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductReceiptLineService productReceiptLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "åå»ºäº§åæ¶è´§åè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductReceiptLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmProductReceiptLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.detail.MesWmProductSalesDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.detail.MesWmProductSalesDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductSalesDetailService productSalesDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductSalesDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmProductSalesDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmProductSalesLineService productSalesLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | |
| | | @PostMapping("/create") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmProductSalesLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmProductSalesLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.detail.MesWmReturnIssueDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.detail.MesWmReturnIssueDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnIssueDetailService issueDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnIssueDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmReturnIssueDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.line.MesWmReturnIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnIssueLineService issueLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建ç产éæåè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnIssueLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmReturnIssueLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.detail.MesWmReturnSalesDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.detail.MesWmReturnSalesDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnSalesDetailService returnSalesDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnSalesDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmReturnSalesDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnSalesLineService returnSalesLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建éå®éè´§åè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnSalesLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmReturnSalesLineRespVO.class, vo -> |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnvendor.MesWmReturnVendorDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnVendorDetailService returnVendorDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnVendorDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmReturnVendorDetailDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.line.MesWmReturnVendorLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.returnvendor.MesWmReturnVendorLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmReturnVendorLineService returnVendorLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建ä¾åºåéè´§åè¡") |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmReturnVendorLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmReturnVendorLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | |
| | | @PostMapping("/generate-from-sale-order") |
| | | @Operation(summary = "ä»éå®è®¢åçæåè´§éç¥å") |
| | | @Parameter(name = "saleOrderId", description = "éå®è®¢åID", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-sales-notice:create')") |
| | | public CommonResult<Long> generateFromSaleOrder(@RequestParam("saleOrderId") Long saleOrderId) { |
| | | public CommonResult<Long> generateFromSaleOrder(@RequestBody Map<String, Long> params) { |
| | | Long saleOrderId = params.get("saleOrderId"); |
| | | return success(salesNoticeService.generateSalesNoticeFromSaleOrder(saleOrderId)); |
| | | } |
| | | |
| | | @PostMapping("/generate-product-sales") |
| | | @Operation(summary = "ä»åè´§éç¥åçæéå®åºåºå") |
| | | @Parameter(name = "id", description = "åè´§éç¥åç¼å·", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:wm-product-sales:create')") |
| | | public CommonResult<Long> generateProductSales(@RequestParam("id") Long id) { |
| | | return success(salesNoticeService.generateProductSalesFromNotice(id)); |
| | | } |
| | | |
| | | // ==================== æ¼æ¥ VO ==================== |
| | | |
| | | private List<MesWmSalesNoticeRespVO> buildRespVOList(List<MesWmSalesNoticeDO> list) { |
| | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.line.MesWmSalesNoticeLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeLineService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmSalesNoticeLineService salesNoticeLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "å建åè´§éç¥åè¡") |
| | |
| | | if (CollUtil.isEmpty(list)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. è·å¾å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | // 1. è·å¾å
³èæ°æ® - ä½¿ç¨ MDM API è·åç©æä¿¡æ¯ |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmSalesNoticeLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(java.util.stream.Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | // 2. æå»ºç»æ |
| | | return BeanUtils.toBean(list, MesWmSalesNoticeLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | |
| | | private String name; |
| | | |
| | | @Schema(description = "éå®è®¢åç¼å·", example = "SO202603010001") |
| | | private String salesOrderCode; |
| | | private String saleOrderCode; |
| | | |
| | | @Schema(description = "客æ·ç¼å·", example = "1") |
| | | private Long clientId; |
| | |
| | | @ExcelProperty("ç¶æ") |
| | | private Integer status; |
| | | |
| | | @Schema(description = "åºåºç¶æ", example = "0") |
| | | @ExcelProperty("åºåºç¶æ") |
| | | private Integer outStatus; |
| | | |
| | | @Schema(description = "夿³¨", example = "夿³¨") |
| | | @ExcelProperty("夿³¨") |
| | | private String remark; |
| | |
| | | @Schema(description = "åè´§æ°é", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") |
| | | private BigDecimal quantity; |
| | | |
| | | @Schema(description = "å·²åºåºæ°é", example = "50.00") |
| | | private BigDecimal outCount; |
| | | |
| | | @Schema(description = "æ¯å¦æ£éª", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") |
| | | private Boolean oqcCheckFlag; |
| | | |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnGroupRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.sn.vo.MesWmSnRespVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.sn.MesWmSnService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | |
| | | @Resource |
| | | private MesWmSnService snService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | |
| | | @PostMapping("/generate") |
| | | @Operation(summary = "çæ SN ç ") |
| | |
| | | if (CollUtil.isEmpty(list)) { |
| | | return; |
| | | } |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnGroupRespVO::getItemId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | | vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); |
| | | MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName())); |
| | |
| | | if (CollUtil.isEmpty(list)) { |
| | | return; |
| | | } |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmSnRespVO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmSnRespVO::getItemId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | list.forEach(vo -> MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | | vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); |
| | | MapUtils.findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName())); |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmStockTakingTaskLineService stockTakingTaskLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // æ¥è¯¢å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmStockTakingTaskLineDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.result.MesWmStockTakingTaskResultSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskResultDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskResultService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmStockTakingTaskResultService stockTakingTaskResultService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // æ¥è¯¢å
³èæ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap( |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( |
| | | convertSet(list, MesWmStockTakingTaskResultDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmStockTakingTaskResultDO::getWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.detail.MesWmTransferDetailRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.detail.MesWmTransferDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.transfer.MesWmTransferDetailService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmTransferDetailService transferDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // æ¥è¯¢ç¸å
³æ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmTransferDetailDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmTransferDetailDO::getItemId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmTransferDetailDO::getToWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.transfer.vo.line.MesWmTransferLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | |
| | | import cn.iocoder.yudao.module.mes.service.wm.transfer.MesWmTransferLineService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| | |
| | | @Resource |
| | | private MesWmTransferLineService transferLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // æ¥è¯¢ç¸å
³æ°æ® |
| | | Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmTransferLineDO::getItemId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(convertSet(list, MesWmTransferLineDO::getItemId)); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMeasureMap = mdmUnitMeasureApi.getUnitMeasureList( |
| | | convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() |
| | | .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); |
| | | Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( |
| | | convertSet(list, MesWmTransferLineDO::getFromWarehouseId)); |
| | | Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.dataobject.mdm; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.KeySequence; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.*; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | |
| | | /** |
| | | * MDM ç©æ DO |
| | | * |
| | | * æ å° mdm_item 表 |
| | | */ |
| | | @TableName("mdm_item") |
| | | @KeySequence("mdm_item_seq") |
| | | @Data |
| | | @EqualsAndHashCode |
| | | @Builder |
| | | @NoArgsConstructor |
| | | @AllArgsConstructor |
| | | public class MesMdmItemDO { |
| | | |
| | | /** |
| | | * ç©æç¼å· |
| | | */ |
| | | @TableId |
| | | private Long id; |
| | | |
| | | /** |
| | | * ç©æç¼ç |
| | | */ |
| | | private String code; |
| | | |
| | | /** |
| | | * ç©æåç§° |
| | | */ |
| | | private String name; |
| | | |
| | | /** |
| | | * ç©ææ¡ç |
| | | */ |
| | | private String barCode; |
| | | |
| | | /** |
| | | * è§æ ¼åå· |
| | | */ |
| | | private String specification; |
| | | |
| | | /** |
| | | * ç©æåç±»ç¼å· |
| | | */ |
| | | private Long categoryId; |
| | | |
| | | /** |
| | | * 计éåä½ç¼å· |
| | | */ |
| | | private Long unitMeasureId; |
| | | |
| | | /** |
| | | * è¾
åä½1ç¼å· |
| | | */ |
| | | private Long unitMeasureId2; |
| | | |
| | | /** |
| | | * è¾
åä½1æ¢ç®æ¯ç |
| | | */ |
| | | private BigDecimal unitMeasureRate1; |
| | | |
| | | /** |
| | | * è¾
åä½2ç¼å· |
| | | */ |
| | | private Long unitMeasureId3; |
| | | |
| | | /** |
| | | * è¾
åä½2æ¢ç®æ¯ç |
| | | */ |
| | | private BigDecimal unitMeasureRate2; |
| | | |
| | | /** |
| | | * é»è®¤ä»åºç¼å· |
| | | */ |
| | | private Long warehouseId; |
| | | |
| | | /** |
| | | * é»è®¤ä»åºç¼ç |
| | | */ |
| | | private String warehouseCode; |
| | | |
| | | /** |
| | | * åçç¼å· |
| | | */ |
| | | private Long brandId; |
| | | |
| | | /** |
| | | * ç©æç±»åï¼1:ç©æ 2:产å 3:åæåï¼ |
| | | */ |
| | | private Integer itemType; |
| | | |
| | | /** |
| | | * ç¶æï¼0æ£å¸¸ 1åç¨ï¼ |
| | | */ |
| | | private Integer status; |
| | | |
| | | /** |
| | | * éè´ä»· |
| | | */ |
| | | private BigDecimal purchasePrice; |
| | | |
| | | /** |
| | | * éå®ä»· |
| | | */ |
| | | private BigDecimal salesPrice; |
| | | |
| | | /** |
| | | * ææ¬ä»· |
| | | */ |
| | | private BigDecimal costPrice; |
| | | |
| | | /** |
| | | * æä½ä»· |
| | | */ |
| | | private BigDecimal minPrice; |
| | | |
| | | /** |
| | | * å®å
¨åºå |
| | | */ |
| | | private BigDecimal safetyStock; |
| | | |
| | | /** |
| | | * æä½åºåé |
| | | */ |
| | | private BigDecimal minStock; |
| | | |
| | | /** |
| | | * æé«åºåé |
| | | */ |
| | | private BigDecimal maxStock; |
| | | |
| | | /** |
| | | * æå°è®¢è´§é |
| | | */ |
| | | private BigDecimal minOrderQty; |
| | | |
| | | /** |
| | | * éè´æåæï¼å¤©ï¼ |
| | | */ |
| | | private Integer leadTime; |
| | | |
| | | /** |
| | | * æ¯å¦æ¹æ¬¡ç®¡ç |
| | | */ |
| | | private Boolean isBatchManaged; |
| | | |
| | | /** |
| | | * æ¯å¦åºåå·ç®¡ç |
| | | */ |
| | | private Boolean isSerialManaged; |
| | | |
| | | /** |
| | | * æ¡ç è§åID |
| | | */ |
| | | private Long barcodeRuleId; |
| | | |
| | | /** |
| | | * ä¿è´¨æå¤©æ° |
| | | */ |
| | | private Integer expiryDay; |
| | | |
| | | /** |
| | | * æ¯å¦é«å¼ç©æ |
| | | */ |
| | | private Boolean highValue; |
| | | |
| | | /** |
| | | * éé(kg) |
| | | */ |
| | | private BigDecimal weight; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | | |
| | | /** |
| | | * å建è
|
| | | */ |
| | | private String creator; |
| | | |
| | | /** |
| | | * å建æ¶é´ |
| | | */ |
| | | private LocalDateTime createTime; |
| | | |
| | | /** |
| | | * æ´æ°è
|
| | | */ |
| | | private String updater; |
| | | |
| | | /** |
| | | * æ´æ°æ¶é´ |
| | | */ |
| | | private LocalDateTime updateTime; |
| | | |
| | | /** |
| | | * æ¯å¦å é¤ |
| | | */ |
| | | private Boolean deleted; |
| | | |
| | | } |
| | |
| | | */ |
| | | private String name; |
| | | /** |
| | | * éå®è®¢åç¼å· |
| | | */ |
| | | private String salesOrderCode; |
| | | /** |
| | | * 客æ·ç¼å· |
| | | * |
| | | * å
³è CRM å®¢æ· {@link cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO#getId()} |
| | |
| | | */ |
| | | private Integer status; |
| | | /** |
| | | * åºåºç¶æ |
| | | * |
| | | * åå
¸ {@link DictTypeConstants#MES_WM_OUT_STATUS} |
| | | * æä¸¾ {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmOutStatusEnum} |
| | | */ |
| | | private Integer outStatus; |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | private String remark; |
| | |
| | | */ |
| | | private BigDecimal quantity; |
| | | /** |
| | | * å·²åºåºæ°é |
| | | */ |
| | | private BigDecimal outCount; |
| | | /** |
| | | * æ¯å¦æ£éª |
| | | */ |
| | | private Boolean oqcCheckFlag; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.mdm; |
| | | |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * MDM ç©æ Mapper |
| | | */ |
| | | @Mapper |
| | | public interface MesMdmItemMapper extends BaseMapperX<MesMdmItemDO> { |
| | | |
| | | default MesMdmItemDO selectByCode(String code) { |
| | | return selectOne(MesMdmItemDO::getCode, code); |
| | | } |
| | | |
| | | default List<MesMdmItemDO> selectListByIds(Collection<Long> ids) { |
| | | return selectList(MesMdmItemDO::getId, ids); |
| | | } |
| | | |
| | | } |
| | |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<MesWmSalesNoticeDO>() |
| | | .likeIfPresent(MesWmSalesNoticeDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(MesWmSalesNoticeDO::getName, reqVO.getName()) |
| | | .likeIfPresent(MesWmSalesNoticeDO::getSalesOrderCode, reqVO.getSalesOrderCode()) |
| | | .likeIfPresent(MesWmSalesNoticeDO::getSaleOrderCode, reqVO.getSaleOrderCode()) |
| | | .eqIfPresent(MesWmSalesNoticeDO::getClientId, reqVO.getClientId()) |
| | | .eqIfPresent(MesWmSalesNoticeDO::getStatus, reqVO.getStatus()) |
| | | .orderByDesc(MesWmSalesNoticeDO::getId)); |
| | |
| | | String MES_WM_MISC_ISSUE_TYPE = "mes_wm_misc_issue_type"; // MES æé¡¹åºåºç±»å |
| | | String MES_WM_MISC_ISSUE_STATUS = "mes_wm_misc_issue_status"; // MES æé¡¹åºåºåç¶æ |
| | | String MES_WM_SALES_NOTICE_STATUS = "mes_wm_sales_notice_status"; // MES åè´§éç¥åç¶æ |
| | | String MES_WM_OUT_STATUS = "mes_wm_out_status"; // MES åºåºç¶æ |
| | | String MES_WM_PRODUCT_SALES_STATUS = "mes_wm_product_sales_status"; // MES éå®åºåºåç¶æ |
| | | String MES_WM_OUTSOURCE_ISSUE_STATUS = "mes_wm_outsource_issue_status"; // MES å§å¤åºåºç¶æ |
| | | String MES_WM_PRODUCT_ISSUE_STATUS = "mes_wm_product_issue_status"; // MES çäº§é¢æç¶æ |
| | |
| | | ErrorCode WM_TRANSACTION_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_012, "æ¹æ¬¡è®°å½ä¸åå¨"); |
| | | ErrorCode WM_MATERIAL_STOCK_REQUIRED = new ErrorCode(1_040_703_013, "åºåè®°å½ä¸è½ä¸ºç©º"); |
| | | ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "åºåè®°å½ä¸æäº¤çç©æãæ¹æ¬¡æåºä½ä¿¡æ¯ä¸ä¸è´"); |
| | | ErrorCode WM_MATERIAL_STOCK_QUANTITY_INVALID = new ErrorCode(1_040_703_015, "è°æ´æ°éä¸è½ä¸ºç©ºæé¶"); |
| | | |
| | | // ========== MES ä»åºç®¡ç-å°è´§éç¥åï¼1-040-704-000ï¼ ========== |
| | | ErrorCode WM_ARRIVAL_NOTICE_NOT_EXISTS = new ErrorCode(1_040_704_000, "å°è´§éç¥åä¸åå¨"); |
| | |
| | | public static final int WM_ITEM_CONSUME = 123; // ç产æ¶èï¼MesWmItemConsumeDO |
| | | public static final int WM_PRODUCT_PRODUCE = 124; // 产å产åºï¼MesWmProductProduceDO |
| | | public static final int WM_RETURN_VENDOR = 125; // ä¾åºåéè´§åºåºï¼MesWmReturnVendorDO |
| | | public static final int WM_STOCK_ADJUST_IN = 126; // åºåè°æ´å
¥åºï¼èªå®ä¹å
¥åºï¼ |
| | | public static final int WM_STOCK_ADJUST_OUT = 127; // åºåè°æ´åºåºï¼èªå®ä¹åºåºï¼ |
| | | |
| | | // ========== CAL æç模å [200, 300) ========== |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.enums.wm; |
| | | |
| | | import cn.iocoder.yudao.framework.common.core.ArrayValuable; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| | | * MES åºåºç¶ææä¸¾ |
| | | */ |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum MesWmOutStatusEnum implements ArrayValuable<Integer> { |
| | | |
| | | NOT_OUT(0, "æªåºåº"), |
| | | PART_OUT(1, "é¨ååºåº"), |
| | | ALL_OUT(2, "å
¨é¨åºåº"); |
| | | |
| | | public static final Integer[] ARRAYS = Arrays.stream(values()) |
| | | .map(MesWmOutStatusEnum::getStatus).toArray(Integer[]::new); |
| | | |
| | | private final Integer status; |
| | | private final String name; |
| | | |
| | | @Override |
| | | public Integer[] array() { |
| | | return ARRAYS; |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.mdm; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; |
| | | |
| | | /** |
| | | * MDM ç©æ Service æ¥å£ |
| | | * |
| | | * ä¸é¨ç¨äºæ¥è¯¢ mdm_item 表 |
| | | */ |
| | | public interface MesMdmItemService { |
| | | |
| | | /** |
| | | * è·å¾ç©æ |
| | | * |
| | | * @param id ç¼å· |
| | | * @return ç©æ |
| | | */ |
| | | MesMdmItemDO getItem(Long id); |
| | | |
| | | /** |
| | | * æ ¡éªç©æåå¨ |
| | | * |
| | | * @param id ç¼å· |
| | | * @return ç©æ |
| | | */ |
| | | MesMdmItemDO validateItemExists(Long id); |
| | | |
| | | /** |
| | | * æ ¡éªç©æåå¨ä¸å¯ç¨ |
| | | * |
| | | * @param id ç¼å· |
| | | * @return ç©æ |
| | | */ |
| | | MesMdmItemDO validateItemExistsAndEnable(Long id); |
| | | |
| | | /** |
| | | * è·å¾ç©æå表 |
| | | * |
| | | * @param ids ç¼å·æ°ç» |
| | | * @return ç©æå表 |
| | | */ |
| | | List<MesMdmItemDO> getItemList(Collection<Long> ids); |
| | | |
| | | /** |
| | | * è·å¾ç©æ Map |
| | | * |
| | | * @param ids ç¼å·æ°ç» |
| | | * @return ç©æ Map |
| | | */ |
| | | default Map<Long, MesMdmItemDO> getItemMap(Collection<Long> ids) { |
| | | return convertMap(getItemList(ids), MesMdmItemDO::getId); |
| | | } |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.iocoder.yudao.module.mes.service.mdm; |
| | | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.mdm.MesMdmItemMapper; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_NOT_EXISTS; |
| | | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.MD_ITEM_IS_DISABLE; |
| | | |
| | | /** |
| | | * MDM ç©æ Service å®ç°ç±» |
| | | * |
| | | * ä¸é¨ç¨äºæ¥è¯¢ mdm_item 表 |
| | | */ |
| | | @Service |
| | | @Validated |
| | | public class MesMdmItemServiceImpl implements MesMdmItemService { |
| | | |
| | | @Resource |
| | | private MesMdmItemMapper mesMdmItemMapper; |
| | | |
| | | @Override |
| | | public MesMdmItemDO getItem(Long id) { |
| | | return mesMdmItemMapper.selectById(id); |
| | | } |
| | | |
| | | @Override |
| | | public MesMdmItemDO validateItemExists(Long id) { |
| | | MesMdmItemDO item = mesMdmItemMapper.selectById(id); |
| | | if (item == null) { |
| | | throw exception(MD_ITEM_NOT_EXISTS); |
| | | } |
| | | return item; |
| | | } |
| | | |
| | | @Override |
| | | public MesMdmItemDO validateItemExistsAndEnable(Long id) { |
| | | MesMdmItemDO item = validateItemExists(id); |
| | | if (item.getStatus() != null && item.getStatus() == 1) { |
| | | throw exception(MD_ITEM_IS_DISABLE); |
| | | } |
| | | return item; |
| | | } |
| | | |
| | | @Override |
| | | public List<MesMdmItemDO> getItemList(Collection<Long> ids) { |
| | | if (ids == null || ids.isEmpty()) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return mesMdmItemMapper.selectListByIds(ids); |
| | | } |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.arrivalnotice.vo.line.MesWmArrivalNoticeLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.arrivalnotice.MesWmArrivalNoticeLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Lazy |
| | | private MesWmArrivalNoticeService arrivalNoticeService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | |
| | | @Override |
| | | public Long createArrivalNoticeLine(MesWmArrivalNoticeLineSaveReqVO createReqVO) { |
| | |
| | | // æ ¡éªç¶åæ®åå¨ä¸ä¸ºèç¨¿ç¶æ |
| | | arrivalNoticeService.validateArrivalNoticeExistsAndDraft(reqVO.getNoticeId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | } |
| | | |
| | | /** |
| | |
| | | import cn.iocoder.yudao.module.erp.api.purchase.ErpPurchaseOrderApi; |
| | | import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderRespDTO; |
| | | import cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import jakarta.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private ErpPurchaseOrderApi purchaseOrderApi; |
| | | |
| | | @Resource |
| | | private MesMdItemService mdItemService; |
| | | private MesMdmItemService mdmItemService; |
| | | |
| | | @Override |
| | | public Long createArrivalNotice(MesWmArrivalNoticeSaveReqVO createReqVO) { |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemBatchConfigDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; |
| | | import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemBatchConfigService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService; |
| | | import jakarta.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | private MesWmBatchMapper batchMapper; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesMdItemBatchConfigService itemBatchConfigService; |
| | | @Resource |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public MesWmBatchDO getOrGenerateBatchCode(MesWmBatchGenerateReqVO reqVO) { |
| | | // 1.1 æ¥è¯¢ç©æä¿¡æ¯ï¼æ£æ¥æ¯å¦å¯ç¨æ¹æ¬¡ç®¡ç |
| | | MesMdItemDO item = itemService.validateItemExists(reqVO.getItemId()); |
| | | if (Boolean.FALSE.equals(item.getBatchFlag())) { |
| | | MesMdmItemDO item = mdmItemService.validateItemExists(reqVO.getItemId()); |
| | | if (Boolean.FALSE.equals(item.getIsBatchManaged())) { |
| | | // æªå¯ç¨æ¹æ¬¡ç®¡çï¼è¿å null |
| | | return null; |
| | | } |
| | |
| | | package cn.iocoder.yudao.module.mes.service.wm.materialstock; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO; |
| | |
| | | MesWmMaterialStockDO validateSelectedStock(Long materialStockId, Long itemId, Long batchId, String batchCode, |
| | | Long warehouseId, Long locationId, Long areaId, BigDecimal quantity); |
| | | |
| | | /** |
| | | * åºåè°æ´ï¼èªå®ä¹åºå
¥åºï¼ |
| | | * |
| | | * @param reqVO è°æ´è¯·æ± |
| | | * @return åºåäºå¡æµæ°´ID |
| | | */ |
| | | Long adjustMaterialStock(@Valid MesWmMaterialStockAdjustReqVO reqVO); |
| | | |
| | | } |
| | |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.collection.SetUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockAdjustReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.materialstock.MesWmMaterialStockMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemTypeService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | |
| | | private MesWmMaterialStockMapper materialStockMapper; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesMdItemTypeService itemTypeService; |
| | | @Resource |
| | |
| | | @Resource |
| | | @Lazy |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmTransactionService wmTransactionService; |
| | | |
| | | @Override |
| | | public MesWmMaterialStockDO getMaterialStock(Long id) { |
| | |
| | | } |
| | | |
| | | // 2. ä¸åå¨åæ°å»º |
| | | MesMdItemDO item = itemService.validateItemExists(itemId); |
| | | MesMdmItemDO item = mdmItemService.validateItemExists(itemId); |
| | | MesWmMaterialStockDO newStock = MesWmMaterialStockDO.builder() |
| | | .itemId(itemId).itemTypeId(item.getItemTypeId()) |
| | | .itemId(itemId).itemTypeId(item.getCategoryId()) |
| | | .warehouseId(warehouseId).locationId(locationId).areaId(areaId) |
| | | .batchId(batchId).batchCode(batchCode).vendorId(vendorId) |
| | | .quantity(BigDecimal.ZERO) // åå§æ°é为 0ï¼ç± updateMaterialStockQuantity æ´æ° |
| | |
| | | return stock; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long adjustMaterialStock(MesWmMaterialStockAdjustReqVO reqVO) { |
| | | // 1. æ ¡éªç©æåå¨ä¸å¯ç¨ |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | |
| | | // 2. 夿æ¯å
¥åºè¿æ¯åºåº |
| | | BigDecimal quantity = reqVO.getQuantity(); |
| | | if (quantity == null || quantity.compareTo(BigDecimal.ZERO) == 0) { |
| | | throw exception(WM_MATERIAL_STOCK_QUANTITY_INVALID); |
| | | } |
| | | boolean isInbound = quantity.compareTo(BigDecimal.ZERO) > 0; |
| | | int bizType = isInbound ? MesBizTypeConstants.WM_STOCK_ADJUST_IN : MesBizTypeConstants.WM_STOCK_ADJUST_OUT; |
| | | |
| | | // 3. æ ¡éªåºä½æ··æ¾è§å |
| | | checkAreaMixingRule(reqVO.getAreaId(), reqVO.getItemId(), reqVO.getBatchId()); |
| | | |
| | | // 4. è·åæå建åºåè®°å½ |
| | | MesWmMaterialStockDO stock = getOrCreateMaterialStock( |
| | | reqVO.getItemId(), |
| | | reqVO.getWarehouseId(), |
| | | reqVO.getLocationId(), |
| | | reqVO.getAreaId(), |
| | | reqVO.getBatchId(), |
| | | reqVO.getBatchCode(), |
| | | reqVO.getVendorId(), |
| | | LocalDateTime.now() |
| | | ); |
| | | |
| | | // 5. æ´æ°åºåæ°éï¼åºåºæ¶æ ¡éªåºåå
è¶³ï¼ |
| | | updateMaterialStockQuantity(stock.getId(), quantity, !isInbound); |
| | | |
| | | // 6. å建åºåäºå¡æµæ°´ |
| | | MesWmTransactionSaveReqDTO transaction = new MesWmTransactionSaveReqDTO() |
| | | .setType(isInbound ? MesWmTransactionTypeEnum.IN.getType() : MesWmTransactionTypeEnum.OUT.getType()) |
| | | .setBizType(bizType) |
| | | .setBizId(stock.getId()) |
| | | .setBizCode("STOCK_ADJUST_" + stock.getId()) |
| | | .setBizLineId(stock.getId()) |
| | | .setItemId(reqVO.getItemId()) |
| | | .setQuantity(quantity) |
| | | .setBatchId(reqVO.getBatchId()) |
| | | .setBatchCode(reqVO.getBatchCode()) |
| | | .setWarehouseId(reqVO.getWarehouseId()) |
| | | .setLocationId(reqVO.getLocationId()) |
| | | .setAreaId(reqVO.getAreaId()) |
| | | .setVendorId(reqVO.getVendorId()) |
| | | .setReceiptTime(LocalDateTime.now()) |
| | | .setCheckFlag(!isInbound); |
| | | wmTransactionService.createTransaction(transaction); |
| | | |
| | | return stock.getId(); |
| | | } |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscissue.vo.line.MesWmMiscIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscissue.MesWmMiscIssueLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmMiscIssueDetailService miscIssueDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | |
| | |
| | | // æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ |
| | | miscIssueService.validateMiscIssueEditable(issueId); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªä»åºãåºåºãåºä½çç¶åå
³ç³» |
| | | warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), |
| | | reqVO.getLocationId(), reqVO.getAreaId()); |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.line.MesWmMiscReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscreceipt.MesWmMiscReceiptLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmMiscReceiptDetailService miscReceiptDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | |
| | |
| | | // æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ |
| | | miscReceiptService.validateMiscReceiptEditable(reqVO.getReceiptId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªä»åºå±çº§å
³ç³»ï¼ä»åº - åºä½ - åºåºï¼ |
| | | warehouseAreaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), |
| | | reqVO.getLocationId(), reqVO.getAreaId()); |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourceissue.MesWmOutsourceIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueDetailMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Lazy |
| | | private MesWmOutsourceIssueLineService outsourceIssueLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | @Resource |
| | |
| | | throw exception(WM_OUTSOURCE_ISSUE_DETAIL_LINE_NOT_MATCH); |
| | | } |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(saveReqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(saveReqVO.getItemId()); |
| | | if (ObjUtil.notEqual(line.getItemId(), saveReqVO.getItemId())) { |
| | | throw exception(WM_OUTSOURCE_ISSUE_DETAIL_ITEM_MISMATCH); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourceissue.MesWmOutsourceIssueLineMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Lazy |
| | | private MesWmOutsourceIssueService outsourceIssueService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | |
| | | throw exception(WM_OUTSOURCE_ISSUE_NOT_EXISTS); |
| | | } |
| | | // æ ¡éªå
³èçç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(saveReqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(saveReqVO.getItemId()); |
| | | // æ ¡éªç©ææ¯å¦å¨å·¥å BOM ä¸ |
| | | validateItemInWorkOrderBom(issue.getWorkOrderId(), saveReqVO.getItemId()); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.detail.MesWmOutsourceReceiptDetailSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptDetailMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private MesWmOutsourceReceiptDetailMapper detailMapper; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService areaService; |
| | | |
| | |
| | | */ |
| | | private void validateDetailSaveData(MesWmOutsourceReceiptDetailSaveReqVO reqVO) { |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªä»åºãåºåºãåºä½çå±çº§å
³ç³» |
| | | areaService.validateWarehouseAreaExists(reqVO.getWarehouseId(), reqVO.getLocationId(), reqVO.getAreaId()); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.outsourcereceipt.MesWmOutsourceReceiptLineMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | private MesWmOutsourceReceiptLineMapper lineMapper; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmOutsourceReceiptDetailService outsourceReceiptDetailService; |
| | |
| | | @Override |
| | | public Long createOutsourceReceiptLine(MesWmOutsourceReceiptLineSaveReqVO createReqVO) { |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(createReqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(createReqVO.getItemId()); |
| | | |
| | | // æå
¥ |
| | | MesWmOutsourceReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmOutsourceReceiptLineDO.class); |
| | |
| | | // æ ¡éªåå¨ |
| | | validateOutsourceReceiptLineExists(updateReqVO.getId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(updateReqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(updateReqVO.getItemId()); |
| | | |
| | | // æ´æ° |
| | | MesWmOutsourceReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmOutsourceReceiptLineDO.class); |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.MesWmOutsourceReceiptPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.outsourcereceipt.vo.MesWmOutsourceReceiptSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.outsourcereceipt.MesWmOutsourceReceiptDetailDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceReceiptStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| | |
| | | @Resource |
| | | private MesMdVendorService vendorService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | |
| | |
| | | MesWmOutsourceReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| | | // 对æ¯è¡æ°éä¸æç»æ»æ°éï¼ä¸æ»¡è¶³ç´æ¥æåº |
| | | if (line.getQuantity().compareTo(totalDetailQuantity) > 0) { |
| | | MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId()); |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId()); |
| | | throw exception(WM_OUTSOURCE_RECEIPT_DETAIL_QUANTITY_MISMATCH, |
| | | item.getCode() + " " + item.getName() + " æªå®æä¸æ¶"); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmPackageService packageService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | |
| | |
| | | // æ ¡éªè£
ç®±åç¶æä¸ºè稿 |
| | | packageService.validatePackageStatusDraft(reqVO.getPackageId()); |
| | | // æ ¡éªäº§åç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªå·¥å已确认 |
| | | workOrderService.validateWorkOrderConfirmed(reqVO.getWorkOrderId()); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productissue.MesWmProductIssueLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmProductIssueService issueService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesProWorkOrderBomService workOrderBomService; |
| | | @Resource |
| | |
| | | // æ ¡éªç©æå¨å·¥å BOM ä¸ |
| | | validateItemInWorkOrderBom(reqVO.getIssueId(), reqVO.getItemId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | } |
| | | |
| | | private void validateItemInWorkOrderBom(Long issueId, Long itemId) { |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt.MesWmProductReceiptLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Resource |
| | | private MesWmProductReceiptDetailService productReceiptDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | |
| | | @Override |
| | | public Long createProductReceiptLine(MesWmProductReceiptLineSaveReqVO createReqVO) { |
| | |
| | | // æ ¡éªç¶åæ®åå¨ä¸ä¸ºå¯ç¼è¾ç¶æ |
| | | productReceiptService.validateProductReceiptEditable(reqVO.getReceiptId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | } |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesDetailMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | private MesWmProductSalesDetailMapper productSalesDetailMapper; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmProductSalesLineService productSalesLineService; |
| | |
| | | throw exception(WM_PRODUCT_SALES_DETAIL_LINE_NOT_MATCH); |
| | | } |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | if (ObjUtil.notEqual(line.getItemId(), reqVO.getItemId())) { |
| | | throw exception(WM_PRODUCT_SALES_DETAIL_ITEM_MISMATCH); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO; |
| | |
| | | @Resource |
| | | private MesWmProductSalesDetailService productSalesDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | |
| | | // æ ¡éªä¸»ååå¨ä¸ä¸ºèç¨¿ç¶æ |
| | | MesWmProductSalesDO sales = productSalesService.validateProductSalesExistsAndDraft(reqVO.getSalesId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªå
³èåè´§éç¥åè¡ï¼å卿§ + å½å± + åæ®µä¸è´æ§ï¼ |
| | | validateSalesNoticeLine(sales, reqVO); |
| | | // æ ¹æ® batchCode è§£æ batchId |
| | |
| | | productSalesMapper.updateById(new MesWmProductSalesDO() |
| | | .setId(id).setStatus(MesWmProductSalesStatusEnum.FINISHED.getStatus())); |
| | | |
| | | // 5. æ´æ°å
³èçåè´§éç¥åç¶æ |
| | | // 5. æ´æ°å
³èçåè´§éç¥ååºåºæ°éåç¶æ |
| | | if (sales.getNoticeId() != null) { |
| | | salesNoticeService.finishSalesNotice(sales.getNoticeId()); |
| | | updateSalesNoticeOutCount(sales); |
| | | } |
| | | |
| | | // 6. åå ERP éå®è®¢åçåºåºæ°éåç¶æ |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ´æ°åè´§éç¥åçåºåºæ°éåç¶æ |
| | | */ |
| | | private void updateSalesNoticeOutCount(MesWmProductSalesDO sales) { |
| | | // è·ååºåºåè¡ |
| | | List<MesWmProductSalesLineDO> lines = productSalesLineService.getProductSalesLineListBySalesId(sales.getId()); |
| | | if (CollUtil.isEmpty(lines)) { |
| | | return; |
| | | } |
| | | // éåè¡ï¼æ noticeLineId æ´æ°åºåºæ°é |
| | | for (MesWmProductSalesLineDO line : lines) { |
| | | if (line.getNoticeLineId() != null && line.getQuantity() != null) { |
| | | salesNoticeService.updateSalesNoticeLineOutCount(line.getNoticeLineId(), line.getQuantity()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åå ERP éå®è®¢åçåºåºæ°éåç¶æ |
| | | */ |
| | | private void updateErpSaleOrderOutCount(MesWmProductSalesDO sales) { |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Lazy |
| | | private MesWmReturnIssueService issueService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | @Lazy |
| | | private MesWmReturnIssueDetailService issueDetailService; |
| | |
| | | // æ ¡éªç¶æ°æ®åå¨ + èç¨¿ç¶æ |
| | | MesWmReturnIssueDO issue = issueService.validateReturnIssueExistsAndPrepare(reqVO.getIssueId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | return issue; |
| | | } |
| | | |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssuePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnissue.vo.MesWmReturnIssueSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnissue.MesWmReturnIssueLineDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| | |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmTransactionService wmTransactionService; |
| | | @Resource |
| | |
| | | MesWmReturnIssueDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| | | // 对æ¯è¡æ°éä¸æç»æ»æ°éï¼ä¸æ»¡è¶³ç´æ¥æåº |
| | | if (line.getQuantity().compareTo(totalDetailQuantity) > 0) { |
| | | MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId()); |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId()); |
| | | throw exception(WM_RETURN_ISSUE_DETAIL_QUANTITY_MISMATCH, |
| | | item.getCode() + " " + item.getName() + " æªå®æä¸æ¶"); |
| | | } |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLineMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmReturnSalesService returnSalesService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | |
| | | * @param batchId æ¹æ¬¡ID |
| | | */ |
| | | private void validateItemBatchManagement(Long returnId, Long itemId, Long batchId) { |
| | | MesMdItemDO item = itemService.validateItemExistsAndEnable(itemId); |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(itemId); |
| | | // å¦æç©æå¯ç¨äºæ¹æ¬¡ç®¡çï¼åå¿
é¡»éæ©æ¹æ¬¡ |
| | | if (Boolean.TRUE.equals(item.getBatchFlag()) && batchId == null) { |
| | | if (Boolean.TRUE.equals(item.getIsBatchManaged()) && batchId == null) { |
| | | throw exception(MD_ITEM_BATCH_REQUIRED); |
| | | } |
| | | // æ ¡éªæ¹æ¬¡åå¨ä¸å±äºå½åç©æåå®¢æ· |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.MesWmReturnSalesSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Resource |
| | | private MesMdClientService clientService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmTransactionService wmTransactionService; |
| | | |
| | |
| | | MesWmReturnSalesDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| | | // 对æ¯è¡æ°éä¸æç»æ»æ°éï¼ä¸æ»¡è¶³ç´æ¥æåº |
| | | if (line.getQuantity().compareTo(totalDetailQuantity) > 0) { |
| | | MesMdItemDO item = itemService.validateItemExistsAndEnable(line.getItemId()); |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId()); |
| | | throw exception(WM_RETURN_SALES_DETAIL_QUANTITY_MISMATCH, |
| | | item.getCode() + " " + item.getName() + " æªå®æä¸æ¶"); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Lazy |
| | | private MesWmReturnVendorLineService returnVendorLineService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmMaterialStockService materialStockService; |
| | | @Resource |
| | |
| | | throw exception(WM_RETURN_VENDOR_DETAIL_LINE_NOT_MATCH); |
| | | } |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªç©æä¸è¡ç©æä¸è´ |
| | | validateItemConsistency(reqVO.getItemId(), line); |
| | | // æ ¡éªåºä½åå¨ |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Lazy |
| | | private MesWmReturnVendorDetailService returnVendorDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | |
| | |
| | | // æ ¡éªç¶æ°æ®åå¨ä¸ä¸ºèç¨¿ç¶æ |
| | | MesWmReturnVendorDO returnVendor = returnVendorService.validateReturnVendorExistsAndPrepare(reqVO.getReturnId()); |
| | | // æ ¡éªç©æåå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªæ¹æ¬¡åå¨ä¸å±äºå½åç©æåä¾åºå |
| | | if (reqVO.getBatchId() != null) { |
| | | batchService.validateBatchExists(reqVO.getBatchId(), reqVO.getItemId(), null, returnVendor.getVendorId()); |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.context.annotation.Lazy; |
| | |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | |
| | | @Override |
| | | public Long createSalesNoticeLine(MesWmSalesNoticeLineSaveReqVO createReqVO) { |
| | |
| | | validateNoticeStatusDraft(reqVO.getNoticeId()); |
| | | // æ ¡éªç©æåå¨ |
| | | if (reqVO.getItemId() != null) { |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | /** |
| | | * 宿åè´§éç¥åï¼åºåºå®æåè°ç¨ï¼ |
| | | * ç´¯å åºåºæ°é并计ç®åºåºç¶æ |
| | | * |
| | | * @param id ç¼å· |
| | | * @deprecated è¯·ä½¿ç¨ {@link #updateSalesNoticeOutCount(Long, java.math.BigDecimal)} |
| | | */ |
| | | @Deprecated |
| | | void finishSalesNotice(Long id); |
| | | |
| | | /** |
| | | * æ´æ°åè´§éç¥åè¡çåºåºæ°é |
| | | * |
| | | * @param noticeLineId åè´§éç¥åè¡ID |
| | | * @param outCount åºåºæ°é |
| | | */ |
| | | void updateSalesNoticeLineOutCount(Long noticeLineId, java.math.BigDecimal outCount); |
| | | |
| | | /** |
| | | * æ´æ°åè´§éç¥åçåºåºç¶æ |
| | | * |
| | | * @param noticeId åè´§éç¥åID |
| | | */ |
| | | void updateSalesNoticeOutStatus(Long noticeId); |
| | | |
| | | /** |
| | | * ä»åè´§éç¥åçæéå®åºåºå |
| | | * |
| | | * @param noticeId åè´§éç¥åID |
| | | * @return éå®åºåºåID |
| | | */ |
| | | Long generateProductSalesFromNotice(Long noticeId); |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.salesnotice.vo.MesWmSalesNoticeSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeLineMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmOutStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | | import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; |
| | | import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Collection; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | |
| | | private ErpSaleOrderApi saleOrderApi; |
| | | @Resource |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | |
| | | @Resource |
| | | private MesWmProductSalesMapper productSalesMapper; |
| | | @Resource |
| | | private MesWmProductSalesLineMapper productSalesLineMapper; |
| | | @Resource |
| | | private MesWmSalesNoticeLineMapper salesNoticeLineMapper; |
| | | |
| | | @Override |
| | | public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) { |
| | |
| | | |
| | | @Override |
| | | public void finishSalesNotice(Long id) { |
| | | // æ ¡éªåå¨ |
| | | MesWmSalesNoticeDO notice = validateSalesNoticeExists(id); |
| | | // æ´æ°ç¶æä¸ºå·²å®æ |
| | | // å·²åºå¼ï¼ä¿çå
¼å®¹æ§ |
| | | updateSalesNoticeOutStatus(id); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateSalesNoticeLineOutCount(Long noticeLineId, BigDecimal outCount) { |
| | | if (noticeLineId == null || outCount == null) { |
| | | return; |
| | | } |
| | | // 1. è·ååè´§éç¥åè¡ |
| | | MesWmSalesNoticeLineDO line = salesNoticeLineMapper.selectById(noticeLineId); |
| | | if (line == null) { |
| | | return; |
| | | } |
| | | // 2. ç´¯å åºåºæ°é |
| | | BigDecimal newOutCount = (line.getOutCount() != null ? line.getOutCount() : BigDecimal.ZERO).add(outCount); |
| | | // 3. æ´æ°è¡ |
| | | salesNoticeLineMapper.updateById(new MesWmSalesNoticeLineDO() |
| | | .setId(noticeLineId) |
| | | .setOutCount(newOutCount)); |
| | | // 4. æ´æ°ä¸»ååºåºç¶æ |
| | | updateSalesNoticeOutStatus(line.getNoticeId()); |
| | | } |
| | | |
| | | @Override |
| | | public void updateSalesNoticeOutStatus(Long noticeId) { |
| | | if (noticeId == null) { |
| | | return; |
| | | } |
| | | // 1. è·ååè´§éç¥å |
| | | MesWmSalesNoticeDO notice = salesNoticeMapper.selectById(noticeId); |
| | | if (notice == null) { |
| | | return; |
| | | } |
| | | // 2. è·ååè´§éç¥åè¡ |
| | | List<MesWmSalesNoticeLineDO> lines = salesNoticeLineMapper.selectListByNoticeId(noticeId); |
| | | if (CollUtil.isEmpty(lines)) { |
| | | return; |
| | | } |
| | | // 3. 计ç®åºåºç¶æ |
| | | int outStatus = calculateOutStatus(lines); |
| | | // 4. æ´æ°åºåºç¶æ |
| | | salesNoticeMapper.updateById(new MesWmSalesNoticeDO() |
| | | .setId(id).setStatus(FINISHED.getStatus())); |
| | | .setId(noticeId) |
| | | .setOutStatus(outStatus)); |
| | | // 5. 妿å
¨é¨åºåºï¼æ´æ°åæ®ç¶æä¸ºå·²å®æ |
| | | if (outStatus == MesWmOutStatusEnum.ALL_OUT.getStatus()) { |
| | | salesNoticeMapper.updateById(new MesWmSalesNoticeDO() |
| | | .setId(noticeId) |
| | | .setStatus(FINISHED.getStatus())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 计ç®åºåºç¶æ |
| | | */ |
| | | private int calculateOutStatus(List<MesWmSalesNoticeLineDO> lines) { |
| | | boolean allOut = true; |
| | | boolean anyOut = false; |
| | | |
| | | for (MesWmSalesNoticeLineDO line : lines) { |
| | | BigDecimal quantity = line.getQuantity() != null ? line.getQuantity() : BigDecimal.ZERO; |
| | | BigDecimal outCount = line.getOutCount() != null ? line.getOutCount() : BigDecimal.ZERO; |
| | | |
| | | if (outCount.compareTo(BigDecimal.ZERO) > 0) { |
| | | anyOut = true; |
| | | } |
| | | if (outCount.compareTo(quantity) < 0) { |
| | | allOut = false; |
| | | } |
| | | } |
| | | |
| | | if (allOut) { |
| | | return MesWmOutStatusEnum.ALL_OUT.getStatus(); |
| | | } else if (anyOut) { |
| | | return MesWmOutStatusEnum.PART_OUT.getStatus(); |
| | | } else { |
| | | return MesWmOutStatusEnum.NOT_OUT.getStatus(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Long generateProductSalesFromNotice(Long noticeId) { |
| | | // 1. æ ¡éªåè´§éç¥ååå¨ä¸ä¸ºå¾
åºåºç¶æ |
| | | MesWmSalesNoticeDO notice = validateSalesNoticeExists(noticeId); |
| | | if (ObjUtil.notEqual(APPROVED.getStatus(), notice.getStatus())) { |
| | | throw exception(WM_SALES_NOTICE_STATUS_NOT_APPROVED); |
| | | } |
| | | |
| | | // 2. è·ååè´§éç¥åè¡ |
| | | List<MesWmSalesNoticeLineDO> noticeLines = salesNoticeLineService.getSalesNoticeLineListByNoticeId(noticeId); |
| | | if (CollUtil.isEmpty(noticeLines)) { |
| | | throw exception(WM_SALES_NOTICE_LINE_EMPTY); |
| | | } |
| | | |
| | | // 3. çæéå®åºåºåç¼ç |
| | | String code = autoCodeRecordService.generateAutoCode("WM_PRODUCT_SALES_CODE", null); |
| | | |
| | | // 4. å建éå®åºåºå主表 |
| | | MesWmProductSalesDO productSales = new MesWmProductSalesDO(); |
| | | productSales.setCode(code); |
| | | productSales.setName("åè´§éç¥å[" + notice.getCode() + "]åºåº"); |
| | | productSales.setClientId(notice.getClientId()); |
| | | productSales.setSaleOrderId(notice.getSaleOrderId()); |
| | | productSales.setSalesOrderCode(notice.getSaleOrderCode()); |
| | | productSales.setNoticeId(noticeId); |
| | | productSales.setSalesDate(notice.getSalesDate()); |
| | | // æ¶è´§ä¿¡æ¯ä»åè´§éç¥å带å
¥ |
| | | productSales.setContactName(notice.getRecipientName()); |
| | | productSales.setContactTelephone(notice.getRecipientTelephone()); |
| | | productSales.setContactAddress(notice.getRecipientAddress()); |
| | | productSales.setStatus(MesWmProductSalesStatusEnum.PREPARE.getStatus()); |
| | | productSalesMapper.insert(productSales); |
| | | |
| | | // 5. éååè´§éç¥åè¡å建éå®åºåºåè¡ |
| | | for (MesWmSalesNoticeLineDO noticeLine : noticeLines) { |
| | | MesWmProductSalesLineDO salesLine = new MesWmProductSalesLineDO(); |
| | | salesLine.setSalesId(productSales.getId()); |
| | | salesLine.setSaleOrderItemId(noticeLine.getSaleOrderItemId()); |
| | | salesLine.setNoticeLineId(noticeLine.getId()); |
| | | salesLine.setItemId(noticeLine.getItemId()); |
| | | salesLine.setQuantity(noticeLine.getQuantity()); |
| | | salesLine.setBatchId(noticeLine.getBatchId()); |
| | | salesLine.setBatchCode(noticeLine.getBatchCode()); |
| | | salesLine.setOqcCheckFlag(noticeLine.getOqcCheckFlag()); |
| | | productSalesLineMapper.insert(salesLine); |
| | | } |
| | | |
| | | return productSales.getId(); |
| | | } |
| | | |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Resource |
| | | private MesMdAutoCodeRecordService autoCodeRecordService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | @Resource |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void generateSnCodes(MesWmSnGenerateReqVO reqVO) { |
| | | // æ ¡éªç©ææ¯å¦åå¨ |
| | | itemService.validateItemExists(reqVO.getItemId()); |
| | | mdmItemService.validateItemExists(reqVO.getItemId()); |
| | | // æ ¡éªå·¥åæ¯å¦åå¨ |
| | | if (reqVO.getWorkOrderId() != null) { |
| | | workOrderService.validateWorkOrderExists(reqVO.getWorkOrderId()); |
| | |
| | | import cn.hutool.core.lang.Assert; |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transaction.MesWmTransactionDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.transaction.MesWmTransactionMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO; |
| | |
| | | @Resource |
| | | private MesWmBatchService batchService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseService warehouseService; |
| | | @Resource |
| | |
| | | } |
| | | // 2. å
¥åºæ¶ï¼å¯ç¨æ¹æ¬¡ç®¡ççç©æï¼å¿
é¡»ä¼ éæ¹æ¬¡å· |
| | | if (inbound) { |
| | | MesMdItemDO item = itemService.validateItemExists(reqDTO.getItemId()); |
| | | if (Boolean.TRUE.equals(item.getBatchFlag())) { |
| | | MesMdmItemDO item = mdmItemService.validateItemExists(reqDTO.getItemId()); |
| | | if (Boolean.TRUE.equals(item.getIsBatchManaged())) { |
| | | if (StrUtil.isEmpty(reqDTO.getBatchCode()) && reqDTO.getBatchId() == null) { |
| | | throw exception(WM_TRANSACTION_BATCH_REQUIRED); |
| | | } |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transfer.MesWmTransferLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.transfer.MesWmTransferLineMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| | | import jakarta.annotation.Resource; |
| | |
| | | @Lazy |
| | | private MesWmTransferDetailService transferDetailService; |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesWmWarehouseAreaService warehouseAreaService; |
| | | @Resource |
| | |
| | | // æ ¡éªç¶æ°æ®å¯ç¼è¾ |
| | | transferService.validateTransferEditable(reqVO.getTransferId()); |
| | | // æ ¡éªäº§ååå¨ |
| | | itemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | mdmItemService.validateItemExistsAndEnable(reqVO.getItemId()); |
| | | // æ ¡éªæ¥æºä»åºãåºåºãåºä½çå
³èå
³ç³» |
| | | warehouseAreaService.validateWarehouseAreaExists(reqVO.getFromWarehouseId(), |
| | | reqVO.getFromLocationId(), reqVO.getFromAreaId()); |