如何用java编码实现这个

题目:条码标签: P:A155V:11123;M:10884217-00/PCS;B:20090902VE;S:000000271974860; PO:5905618100/0040:Q:/10000/17/20:D:2019-10-18;YX:2020-09-07;
解析条码: M: 代表物料号10884217-00D: 代表生产时间2019-10-18 S:000000271974860
需求:产生生产批次格式为:生产日期六位(191018)+四位流水号一一1910180001
要求:相同物料生产日期为同一天的批次相同,不同物料生产日期相同的批次流水码累加+1

用java如何实现

建个map,看你要存在那,

1.Map<日期,<该日期的个数,编号>>  
2.Map<日期,List<编号>>

判断个数的话直接通过取出日期里面的Map的size就能知道当前日期里面生产了几个然后+1存入下一个。
以上两个都可以

怎么感觉这个问题似曾相识。。。。我是没看懂你想问什么,想实现什么,简单说说吧。

  1. 解析: 会正则就正则,不会就直接indexOf或者分割字符串,都很容易
  2. 生成: 生成就更简单了,最简单的直接拼接完事
  1. 首先大概做个对象,必须持久化(最少一个mysql)
  2. 拿出Label
  3. 用redis保存批次号序号最大值(我们用的redis,有效期一天,名称加日期)
private Label getLabel(String str){
        Label label = new Label();
        String[] strs = str.split(";");
        for(String s:strs){
            if(s.contains(":")){
                String []items = s.split(":");
                if("M".equals(items[0].trim())){
                    label.setProductId(items[1].trim());
                }else if("D".equals(items[0].trim())){
                    label.setProductTime(items[1].trim());
                }
            }
        }
        return label;
    }

    class Label{
//        题目:条码标签: P:A155V:11123;M:10884217-00/PCS;B:20090902VE;S:000000271974860; PO:5905618100/0040:Q:/10000/17/20:D:2019-10-18;YX:2020-09-07;
//        解析条码: M: 代表物料号10884217-00D: 代表生产时间2019-10-18 S:000000271974860
        String batchNo;
        private String productId;
        private String productTime;

        public String getBatchNo() {
            return batchNo;
        }

        public void setBatchNo(String batchNo) {
            this.batchNo = batchNo;
        }

        public String getProductId() {
            return productId;
        }

        public void setProductId(String productId) {
            this.productId = productId;
        }

        public String getProductTime() {
            return productTime;
        }

        public void setProductTime(String productTime) {
            this.productTime = productTime;
        }
    }