我们现在讨论一下系统找库位方案, 如何实现,对现有找库位规则进行整改,数据库也要整改
1、要能方便的填写单伸堆垛机或双伸堆垛机的深浅库位配置
2、根据设备状态分配库位,离线设备不分配
3、库位分配要均衡到每一个设备
4、库位高度需要匹配到对应库位信息,低库位能向上兼容
5、空托盘优先放在locType2库位=1的库位,没有这种库位了,允许放到其他库位
6、给入库站点设置有限去那些堆垛机,其次去那些堆垛机,弄成页面可以配置入库站点
7、在系统配置新增优先放前几列的配置,当入库的货物是高频货物时放在前几列
8、组托中会标识该托盘是高频还是低频,如果是高频则从前往后找库位,如果是低频则从后往前找库位
9、找库位时locMast中whsType字段无用
| New file |
| | |
| | | IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.cust_wait_pakin') AND name = N'freq_type') |
| | | BEGIN |
| | | ALTER TABLE [dbo].[cust_wait_pakin] |
| | | ADD [freq_type] INT NULL; |
| | | END; |
| | | |
| | | IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id = OBJECT_ID(N'dbo.cust_wait_pakin_log') AND name = N'freq_type') |
| | | BEGIN |
| | | ALTER TABLE [dbo].[cust_wait_pakin_log] |
| | | ADD [freq_type] INT NULL; |
| | | END; |
| | | |
| | | IF NOT EXISTS (SELECT 1 FROM sys_config WHERE code = N'highFreqFrontBayCount') |
| | | BEGIN |
| | | INSERT INTO sys_config (name, code, value, type, status) |
| | | VALUES (N'高频货物优先前几列', N'highFreqFrontBayCount', N'0', 1, 1); |
| | | END; |
| New file |
| | |
| | | IF COL_LENGTH('dbo.asr_bas_devp', 'in_first_crn_csv') IS NULL |
| | | BEGIN |
| | | ALTER TABLE [dbo].[asr_bas_devp] |
| | | ADD [in_first_crn_csv] VARCHAR(255) NULL, |
| | | [in_second_crn_csv] VARCHAR(255) NULL, |
| | | [in_first_crn_current_no] INT NULL, |
| | | [in_second_crn_current_no] INT NULL; |
| | | END; |
| | | |
| | | IF NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.extended_properties |
| | | WHERE major_id = OBJECT_ID(N'dbo.asr_bas_devp') |
| | | AND name = N'MS_Description' |
| | | ) |
| | | BEGIN |
| | | EXEC sys.sp_addextendedproperty |
| | | @name = N'MS_Description', |
| | | @value = N'站点基础信息表', |
| | | @level0type = N'SCHEMA', |
| | | @level0name = N'dbo', |
| | | @level1type = N'TABLE', |
| | | @level1name = N'asr_bas_devp'; |
| | | END; |
| | | |
| | | IF NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.extended_properties |
| | | WHERE major_id = OBJECT_ID(N'dbo.asr_bas_devp') |
| | | AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'dbo.asr_bas_devp'), N'in_first_crn_csv', 'ColumnId') |
| | | AND name = N'MS_Description' |
| | | ) |
| | | BEGIN |
| | | EXEC sys.sp_addextendedproperty |
| | | @name = N'MS_Description', |
| | | @value = N'入库第一优先堆垛机,CSV', |
| | | @level0type = N'SCHEMA', |
| | | @level0name = N'dbo', |
| | | @level1type = N'TABLE', |
| | | @level1name = N'asr_bas_devp', |
| | | @level2type = N'COLUMN', |
| | | @level2name = N'in_first_crn_csv'; |
| | | END; |
| | | |
| | | IF NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.extended_properties |
| | | WHERE major_id = OBJECT_ID(N'dbo.asr_bas_devp') |
| | | AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'dbo.asr_bas_devp'), N'in_second_crn_csv', 'ColumnId') |
| | | AND name = N'MS_Description' |
| | | ) |
| | | BEGIN |
| | | EXEC sys.sp_addextendedproperty |
| | | @name = N'MS_Description', |
| | | @value = N'入库第二优先堆垛机,CSV', |
| | | @level0type = N'SCHEMA', |
| | | @level0name = N'dbo', |
| | | @level1type = N'TABLE', |
| | | @level1name = N'asr_bas_devp', |
| | | @level2type = N'COLUMN', |
| | | @level2name = N'in_second_crn_csv'; |
| | | END; |
| | | |
| | | IF NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.extended_properties |
| | | WHERE major_id = OBJECT_ID(N'dbo.asr_bas_devp') |
| | | AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'dbo.asr_bas_devp'), N'in_first_crn_current_no', 'ColumnId') |
| | | AND name = N'MS_Description' |
| | | ) |
| | | BEGIN |
| | | EXEC sys.sp_addextendedproperty |
| | | @name = N'MS_Description', |
| | | @value = N'入库第一优先池当前堆垛机号', |
| | | @level0type = N'SCHEMA', |
| | | @level0name = N'dbo', |
| | | @level1type = N'TABLE', |
| | | @level1name = N'asr_bas_devp', |
| | | @level2type = N'COLUMN', |
| | | @level2name = N'in_first_crn_current_no'; |
| | | END; |
| | | |
| | | IF NOT EXISTS ( |
| | | SELECT 1 |
| | | FROM sys.extended_properties |
| | | WHERE major_id = OBJECT_ID(N'dbo.asr_bas_devp') |
| | | AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'dbo.asr_bas_devp'), N'in_second_crn_current_no', 'ColumnId') |
| | | AND name = N'MS_Description' |
| | | ) |
| | | BEGIN |
| | | EXEC sys.sp_addextendedproperty |
| | | @name = N'MS_Description', |
| | | @value = N'入库第二优先池当前堆垛机号', |
| | | @level0type = N'SCHEMA', |
| | | @level0name = N'dbo', |
| | | @level1type = N'TABLE', |
| | | @level1name = N'asr_bas_devp', |
| | | @level2type = N'COLUMN', |
| | | @level2name = N'in_second_crn_current_no'; |
| | | END; |
| New file |
| | |
| | | package com.zy.api.entity; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.beans.BeanUtils; |
| | | |
| | | import static org.junit.jupiter.api.Assertions.assertEquals; |
| | | import static org.junit.jupiter.api.Assertions.assertFalse; |
| | | import static org.junit.jupiter.api.Assertions.assertTrue; |
| | | |
| | | class OrderParamsFieldAliasTest { |
| | | |
| | | private final ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | @Test |
| | | void packageFieldShouldRoundTripThroughJacksonAndFastjson() throws Exception { |
| | | StockUpOrderParams params = buildSampleParams(); |
| | | |
| | | String jacksonJson = objectMapper.writeValueAsString(params); |
| | | assertTrue(jacksonJson.contains("\"package\":1")); |
| | | assertFalse(jacksonJson.contains("packageFlag")); |
| | | |
| | | StockUpOrderParams jacksonRoundTrip = objectMapper.readValue(jacksonJson, StockUpOrderParams.class); |
| | | assertEquals(Integer.valueOf(1), jacksonRoundTrip.getPackageFlag()); |
| | | assertEquals("客户A", jacksonRoundTrip.getCustomerName()); |
| | | assertEquals("CONT-001", jacksonRoundTrip.getContainerNo()); |
| | | assertEquals(Integer.valueOf(2), jacksonRoundTrip.getTeu()); |
| | | |
| | | String fastjsonJson = JSON.toJSONString(params); |
| | | assertTrue(fastjsonJson.contains("\"package\":1")); |
| | | assertFalse(fastjsonJson.contains("packageFlag")); |
| | | |
| | | OrderParams fastjsonRoundTrip = JSON.parseObject(fastjsonJson, OrderParams.class); |
| | | assertEquals(Integer.valueOf(1), fastjsonRoundTrip.getPackageFlag()); |
| | | assertEquals("外库-01", fastjsonRoundTrip.getOutDoorNo()); |
| | | assertEquals(Double.valueOf(12.5), fastjsonRoundTrip.getCubeNumber()); |
| | | } |
| | | |
| | | @Test |
| | | void beanCopyShouldKeepNewInheritedFields() { |
| | | StockUpOrderParams source = buildSampleParams(); |
| | | PubOrderParams target = new PubOrderParams(); |
| | | |
| | | BeanUtils.copyProperties(source, target); |
| | | |
| | | assertEquals(source.getCustomerId(), target.getCustomerId()); |
| | | assertEquals(source.getCustomerName(), target.getCustomerName()); |
| | | assertEquals(source.getItem(), target.getItem()); |
| | | assertEquals(source.getPackageFlag(), target.getPackageFlag()); |
| | | assertEquals(source.getOutDoorNo(), target.getOutDoorNo()); |
| | | assertEquals(source.getPlateNo(), target.getPlateNo()); |
| | | assertEquals(source.getTrainNo(), target.getTrainNo()); |
| | | assertEquals(source.getFreqType(), target.getFreqType()); |
| | | assertEquals(source.getCubeNumber(), target.getCubeNumber()); |
| | | assertEquals(source.getContainerNo(), target.getContainerNo()); |
| | | assertEquals(source.getTeu(), target.getTeu()); |
| | | } |
| | | |
| | | private StockUpOrderParams buildSampleParams() { |
| | | StockUpOrderParams params = new StockUpOrderParams(); |
| | | params.setDispatch_no("DISP-001"); |
| | | params.setCompany_id("COMP-001"); |
| | | params.setCustomerId("CUST-001"); |
| | | params.setCustomerName("客户A"); |
| | | params.setItem("ITEM-001"); |
| | | params.setPackageFlag(1); |
| | | params.setOutDoorNo("外库-01"); |
| | | params.setPlateNo("沪A12345"); |
| | | params.setTrainNo("T-20260414"); |
| | | params.setFreqType(2); |
| | | params.setCubeNumber(12.5); |
| | | params.setContainerNo("CONT-001"); |
| | | params.setTeu(2); |
| | | return params; |
| | | } |
| | | } |