FTPC AT表(表对象)前端工具类,批量保存,删除,更新,表关联,强制Dependent子表查询

FTPC AT表(表对象)前端工具类,批量保存,删除,更新,表关联,强制Dependent子表查询

package com.mes.util.common;

import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.stream.Collectors;

import com.datasweep.compatibility.client.*;
import com.datasweep.compatibility.client.Error;
import com.datasweep.compatibility.manager.ServerImpl;
import com.datasweep.compatibility.ui.Time;
import com.datasweep.plantops.common.constants.filtering.IFilterComparisonOperators;
import com.datasweep.plantops.common.dataobjects.DATRow;
import com.datasweep.plantops.common.dataobjects.DReadInfo;
import com.ftpc.common.utilities.ATRowUtility;
import com.rockwell.mes.commons.base.ifc.objects.IMESATObject;
import com.rockwell.mes.commons.base.ifc.objects.MESATObject;
import com.rockwell.mes.commons.base.ifc.objects.MESATObjectManager;
import com.rockwell.mes.commons.base.ifc.services.IFunctionsEx;
import com.rockwell.mes.commons.base.ifc.services.PCContext;
import com.rockwell.mes.commons.base.ifc.utility.CollectionUtility;

/**
 * AT表(对象)工具类
 *
 * @author xuweijun
 * @date 2022/5/23
 */
public class ATUtils extends ATRowUtility{
    
    
    //private constructor
    private ATUtils() {
    
    
    }

    public static void  joinInFilter(ATRowFilter parentFilter, ATRowFilter dependentFilter) {
    
    
        parentFilter.addSearchForSubFilter(null,ATRowFilter.KEY,
                IFilterComparisonOperators.IN,null,ATRowFilter.PARENT_KEY,dependentFilter);
    }

    /**
     * ATRow 转 java 对象
     * @author xuweijun
     * @date 2022/5/23 09:32
     * @param atRows 集合
     * @param clazz  类型
     * @return java.util.List<T>
     */
    public <T extends IMESATObject> List<T>  convert(List<ATRow> atRows, Class<T> clazz) {
    
    
        if(CollectionUtility.isEmpty(atRows))
            return null;
        return atRows.stream().map(item -> convert(item, clazz)).collect(Collectors.toList());
    }
    /**
     * ATRow 转 java 对象
     * @author xuweijun
     * @date 2022/5/23 09:38
     * @param atRow atRow
     * @param clazz  类型
     * @return T
     */
    public <T extends IMESATObject> T  convert(ATRow atRow, Class<T> clazz) {
    
    
        return MESATObjectManager.getSynchronizedInstance(clazz, atRow);
    }
    /**
     * 按子表filter过滤子表结果
     * @author xuweijun
     * @date 2022/5/23 09:01
     * @param atRowFilter 子表过滤器
     * @return java.util.Vector<com.datasweep.compatibility.client.ATRow>
     */
    public static Vector<ATRow> getDenpendentAtrows(ATRowFilter atRowFilter) throws Exception {
    
    
        DATRow[] var4 = ServerImpl.getDefaultServer().getProxyFactory().getObjectRetrievalProxy().getATRows(FilterSupport.getData(atRowFilter), true, (DReadInfo) null);
        Vector<ATRow> atRows = new Vector<>();
        if (var4 != null) {
    
    
            for (int var5 = 0; var5 < var4.length; ++var5) {
    
    
                Class<ATRow> atRowClass = ATRow.class;
                Class[] parameterTypes = {
    
    DATRow.class, Server.class};
                Constructor<ATRow> constructor = atRowClass.getDeclaredConstructor(parameterTypes);
                constructor.setAccessible(true);
                ATRow atRow1 = constructor.newInstance(var4[var5], ServerImpl.getDefaultServer());
                atRows.add(atRow1);
            }
        }
        return atRows;
    }
    /**
     * 通过子ATRow获取ParentATRow
     * @author xuweijun
     * @date 2022/5/23 09:03
     * @param dependentATrow 子ATRow
     * @return com.datasweep.compatibility.client.ParentATRow
     */
    public static ParentATRow getParentAtRowByDependentAtRow(ATRow dependentATrow) throws DatasweepException {
    
    
        ATDefinition atDefinition = dependentATrow.getATDefinition();
        if (!atDefinition.isDependent())
            return null;
        ATDefinition parentATDefinition = atDefinition.getParentATDefinition();
        Object datRow = ReflectUtilsEx.getObjByField(dependentATrow, dependentATrow.getClass(), "datRow");
        DATRow datRow1 = ReflectUtilsEx.convertValue(datRow, DATRow.class);
        ATRow atRow1 = ServerImpl.getDefaultServer().getATManager(parentATDefinition).getATRow(datRow1.getParentKey(), true);
        return (ParentATRow) atRow1;
    }

    /**
     * 方法说明
     * 测试
     * @param args
     * @return void
     * @author xuweijun
     * @date 2022/5/23 09:01
     */
    public static void main(String[] args) throws Exception {
    
    
        IFunctionsEx functions = PCContext.getFunctions();
        ServerImpl defaultServer = ServerImpl.getDefaultServer();
        ATHandler atHandler = functions.createATHandler("MAH_Product_Test");
        ATRowFilter atRowFilter = functions.createATRowFilter("MAH_SolutionDetail");

        Vector atRowsByFilter = atHandler.getATRowsByFilter(atRowFilter, true);
        ATRow atRow = atHandler.createATRow();

        ATDefinition atDefinition = functions.createATDefinition("123");
        ATRowFilter atRowFilter_ = atDefinition.createATRowFilter_();

        ATRow atRow_ = atDefinition.createATRow_();
        atRow_.setValue("123", new Object());
        ATRow atRow1 = atHandler.createATRow();
        Response save = atRow1.save(null, null, null);

        ATDefinition mah_solutionMain = functions.getATDefinition("MAH_SolutionMain");
        ATRowFilter atRowFilter_1 = mah_solutionMain.createATRowFilter_();
//        ATRowFilter atRowFilter_1 = atDefinition.createATRowFilter_();//鏃犳硶寰楀埌ParentATRow
        ATRowFilter mah_solutionDetail = functions.createATRowFilter("MAH_SolutionDetail");
        ATUtils.joinInFilter(atRowFilter_1, mah_solutionDetail);
        Vector<ParentATRow> exec = atRowFilter_1.exec();
        ParentATRow parentATRow = exec.get(0);
        Vector<DependentATRow> dependentATRows = parentATRow.getDependentATRows();


        Vector<ATRow> denpendentAtrows = ATUtils.getDenpendentAtrows(mah_solutionDetail);
        ATRow atRowDepent = denpendentAtrows.get(0);
        ParentATRow parentATRow1 = ATUtils.getParentAtRowByDependentAtRow(atRowDepent);
    }
    /**
     * 批量保存ATrows
     * @author xuweijun
     * @date 2022/6/11 16:57
     * @param atRows
     * @return com.datasweep.compatibility.client.Response
     */
    public static Response saveAtRows(List<ATRow> atRows){
    
    
        if(CollectionUtility.isEmpty(atRows))return new Response(new Error(new Exception("保存失败,传入List为"),PCContext.getServerImpl()));
        ATHandler atHandler = PCContext.getFunctions().createATHandler(atRows.get(0).getATDefinition().getName());
        // 创建ATRowMap
        Object atRowCache = ReflectUtilsEx.getObjByField(atHandler, atHandler.getClass(), "atRowCache");
        Map map = ReflectUtilsEx.convertValue(atRowCache, Map.class);
        atRows.forEach(item->map.put(new Long(item.getKey()), item));
        return atHandler.save();
    }
    /**
     * 批量保存ATObjects
     * @author xuweijun
     * @date 2022/6/11 16:57
     * @param atObjects
     * @return com.datasweep.compatibility.client.Response
     */
    public static Response saveAtObjects(List<? extends MESATObject> atObjects){
    
    
        if(CollectionUtility.isEmpty(atObjects))return new Response(new Error(new Exception("保存失败,传入List为空"),PCContext.getServerImpl()));
        List<ATRow> atRows = atObjects.stream().map(item -> item.getATRow()).collect(Collectors.toList());
        return saveAtRows(atRows);
    }
    /**
     * 批量删除
     * @author xuweijun
     * @date 2022/8/10 10:48
     * @param atRows
     * @return com.datasweep.compatibility.client.Response
     */
    public static Response deleteAtRows(List<ATRow> atRows){
    
    
        if(CollectionUtility.isEmpty(atRows))return new Response(new Error(new Exception("删除失败,传入List为空"),PCContext.getServerImpl()));
        atRows.forEach(item -> {
    
    
            item.markAsDeleted();
        });
        return saveAtRows(atRows);
    }

    /**
     * 批量删除
     * @author xuweijun
     * @date 2022/8/10 10:48
     * @param atObjects
     * @return com.datasweep.compatibility.client.Response
     */
    public static Response deleteAtObjects(List<? extends MESATObject> atObjects){
    
    
        if(CollectionUtility.isEmpty(atObjects))return new Response(new Error(new Exception("删除失败,传入List为空"),PCContext.getServerImpl()));
        atObjects.forEach(item -> {
    
    
            item.getATRow().markAsDeleted();
        });
        return saveAtObjects(atObjects);
    }
}

猜你喜欢

转载自blog.csdn.net/oXiaoWeiWuDi/article/details/126466471
今日推荐