package com.steering.pss.qcm;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import CoreFS.SA01.CoreIComponent;
import CoreFS.SA06.CoreReturnObject;
import CoreFS.SA08.CoreXmlSqlParsersFactory;

import com.steering.comm.db.DBCommon;

public class StdTypeBase extends DBCommon {

    /**
     * Title: GetDesc
     * Description: 获取标准类别描述
     * @param desc  输入的标准类别描述(新增)
     * @return   平台统一返回对象
     */
    public CoreReturnObject GetDesc(String desc) {
        Object[] obj = new Object[] { desc };
        return this.getDataBySqlID("StdTypeBase.GetDESC_ADD", obj); // 获取存在的标准类别描述-新增
    }
  
     /**
     *  标准类别是否被产品规范引用
     * @param code 标准类别代码
     * @return   平台统一返回对象
     */
    public CoreReturnObject getPsc(String code) {
         Object[] obj = new Object[] { code };
         return this.getDataBySqlID("StdTypeBase.IsLinkPSC", obj); // 获取存在的标准类别描述-新增
     }
    /**
     * Title: GetDescU
     * Description:  获取标准类别描述
     * @param desc 输入的标准类别描述(修改)
     * @param code 标准类别编号
     * @return  平台统一返回对象
     */
    public CoreReturnObject GetDescU(String desc,String code) {
        Object[] obj = new Object[] { desc,code };
        return this.getDataBySqlID("StdTypeBase.GetDESC_UPDATE", obj); // 获取存在的标准类别描述-修改
    }
    
    /**
     * Title: doQuery
     * Description:  查询
     * @param includeDeleted  true 有效数据 false 有效+无效数据
     * @param desc  查询条件
     * @return  平台统一返回对象
     */
    public CoreReturnObject doQuery(Boolean includeDeleted, String desc) {
        String deletedFlag = includeDeleted ? "0" : "";
        Object[] params = new Object[] { deletedFlag, desc };
        return this.getDataBySqlID("StdTypeBase.QUERY", params);
    }

    /**
     * Title: doAdd
     * Description: 新增标准类别
     * @param params  新增的标准类别信息
     * @return  平台统一返回对象
     */
    public CoreReturnObject doAdd(ArrayList<Object> params) {
        CoreReturnObject cro = new CoreReturnObject();
        String stdcode = "";
        String str = CoreXmlSqlParsersFactory.getSql("StdTypeBase.GetCode"); //取得最大编号的SQL语句
        try {//自动生成JG码
            ResultSet rs = this.getDao("TgDao").ExceuteQueryForResultSet(str);
            if (rs.next()) {//取得最大编号
                stdcode = rs.getString(1).toString();  
                int code = Integer.parseInt(stdcode);
                if (code == 999) {
                    cro = cro.SetErrInfo("标准类别编码已经达到最大，请清理数据库");
                    return cro;
                }
                else {//编号加1 
                    code += 1;
                    stdcode = "00" + String.valueOf(code);
                    stdcode = stdcode.substring(stdcode.length()-3,stdcode.length() );
                    params.add(stdcode);
                }
            }
            else {//如果数据库没有值，则第一个添加的序号为001
                stdcode = "001";
                params.add(stdcode);
            }
        }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            CoreIComponent.logAdapter.filelogger.logError(e.getMessage());// 将服务端的错误信息写入日志文件
        }
        Object[] obj = params.toArray();
        return this.setDataBySqlID("StdTypeBase.ADD", obj);
    }

    /**
     * Title: doUpdate
     * Description: 修改数据
     * @param params 修改参数
     * @return  平台统一返回对象
     */
    public CoreReturnObject doUpdate(ArrayList<Object> params) {
        Object[] obj = params.toArray();
        return this.setDataBySqlID("StdTypeBase.UPDATE", obj);
    }

    /**
     * Title: doDelete
     * Description:  删除或恢复
     * @param code  标准类别编号
     * @param deletename  删除人
     * @param flag  删除或恢复标志 true 删除 false 恢复
     * @return 平台统一返回对象
     */
    public CoreReturnObject doDelete(String code, String deletename,
            Boolean flag) {
        if (flag) {
            Object[] params = new Object[] { deletename, code };
            return this.setDataBySqlID("StdTypeBase.DELETE", params);
        }
        else {
            Object[] params = new Object[] { code };
            return this.setDataBySqlID("StdTypeBase.RESUME", params);
        }
    }
}
