分类 默认分类 下的文章

想要弄清楚ERP的真正意思,光看概念是远远不够的,我们先来举个例子:

没有ERP的时候,如果客户打来了电话表示对库存当前数据有疑问,要求核查数据,业务人员只能拿着合同到处跑,必须将采

购部、生产部、销售部调查个遍才能发现问题,搜集数据,解决问题,效率低下。有了ERP后,所有的流程、文档、事务都可以在线

上,取代了之前的线下文档,可以直接调取ERP系统中的库存数据与客户及时核对。公司ERP系统贯穿整个业务流程,业务人员再也不

用东跑西跑,手机或电脑上就能与各部门数据互联互通。由此可见,有了ERP系统之后,所有的业务数据都可以在线上找到,做到了

对企业人、财、物的管控。这也就是ERP的具体意思,ERP是Enterprise Resource Planning(企业资源计划)的简称。

作者:CRM卡老师
链接:https://www.zhihu.com/question/394055620/answer/2196649141
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

例如 :

List<obj1> obj1List ,List<obj2> obj2List,需要按照obj1.id=obj2.id进行整合
select * from obj1List left join obj2List on obj1.id=obj2.id

第一步:将obj1List转换成map

将list转成id为key,obj1为value的map对象

  public static <K, V> Map<K, V> listToMap(List<V> list, String keyMethodName, Class<V> c) {
      Map<K, V> map = new HashMap<K, V>();
      if (list != null) {
          try {
              Method methodGetKey = c.getMethod(keyMethodName);
              for (int i = 0; i < list.size(); i++) {
                  V value = list.get(i);
                  @SuppressWarnings("unchecked")
                  K key = (K) methodGetKey.invoke(list.get(i));
                  map.put(key, value);
              }
          } catch (Exception e) {
              throw new IllegalArgumentException("field can't match the key!");
          }
      }

      return map;
  }

第二步:根据key值将obj2List进行copy

for (Obj2 obj: obj2List) {

      try {
          System.out.println(obj);
          BeanUtils.copyProperties(mapFromList1.get(obj.getId()), obj);
      } catch (Exception e) {
          e.printStackTrace();
      }
  }

另一个例子:
java代码

public class TEST {
    public static void main(String[] args) {
       
        List<Model1> list1 = new ArrayList();
        List<Model1> list2 = new ArrayList();
        List<Model2> list3= new ArrayList();
        for (int i=0;i<list1.size();i++){
            for (int j=0;j< list2.size();j++){
//判断两个集合no是否相等
               if (list1.get(i).getNo()==list2.get(i).getNo()){
//给第三个集合赋值并计算different
                   Model2 model2=new Model2();
                   model2.setName(list1.get(i).getName());
                   model2.setNo(list1.get(i).getNo());
                   model2.setDifferent(list1.get(i).getName()-list2.get(i).getName());
               list3.add(model2);
               }
            }
        }
        System.out.println(list3);
    }
    
    private static class Model2 {
        Integer no;
        Integer name;
        Integer different;
    
        public Integer getNo() {
            return no;
        }
    
        public void setNo(Integer no) {
            this.no = no;
        }
    
        public Integer getName() {
            return name;
        }
    
        public void setName(Integer name) {
            this.name = name;
        }
    
        public Integer getDifferent() {
            return different;
        }
    
        public void setDifferent(Integer different) {
            this.different = different;
        }
    }
    private static class Model1 {
        Integer no;
        Integer name;
    
        public Integer getNo() {
            return no;
        }
    
        public void setNo(Integer no) {
            this.no = no;
        }
    
        public Integer getName() {
            return name;
        }
    
        public void setName(Integer name) {
            this.name = name;
        }
    }
}

参考文章:https://ask.csdn.net/questions/7715948

Java 提供了一个赋值运算符来复制值,但没有提供运算符来复制对象。对象类有一个克隆方法,可用于复制对象的值而没有任何副作用。赋值运算符有一个副作用,即当一个引用被分配给另一个引用时,不会创建一个新对象,并且两个引用都指向同一个对象。这意味着如果我们更改一个对象中的值,那么相同的值也会反映在另一个对象中。clone() 方法处理这个问题。请参见下面的示例。

- 阅读剩余部分 -

新建的Spring Boot项目中,一般都会引用spring-boot-starter或者spring-boot-starter-web,而这两个起步依赖中都已经包含了对于spring-boot-starter-jdbc或spring-boot-starter-data-jpa的依赖。 当我们使用了这两个依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager。 所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。

- 阅读剩余部分 -