package com.steering.Demand.sever;

import CoreFS.SA06.CoreReturnObject;
import CoreFS.SA08.CoreXmlSqlParsersFactory;
import CoreFS.SC01.CoreConstantData;
import com.steering.Demand.entity.*;
import com.steering.comm.converter.CoreConverter;
import com.steering.comm.converter.EntityTool;
import com.steering.comm.converter.QualityDesignTool;
import com.steering.comm.db.DBCommon;
import com.steering.mes.mcp.common.PlanService;
import org.hsqldb.lib.StringUtil;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

/**
 * Created by 朱少波 on 2020/4/16.
 */
public class TmsDemandServer extends DBCommon {

//  TZH 24.4.24 注销物流接口
//    /**
//     * 查询需求
//     *
//     * @param
//     * @return
//     */
//    public CoreReturnObject doQuery(String[] plinCodes, String start, String end, String judgeStoveNo,String[] status, String[] ClassType)
//    {
//        return this.doQuery(plinCodes,start,end,judgeStoveNo, "",status,ClassType);
//    }

//    TZH 24.4.24 注销物流接口
//    /**
//     * 查询需求
//     *
//     * @param
//     * @return
//     */
//    public CoreReturnObject doQuery(String[] plinCodes, String start, String end, String judgeStoveNo,String flagStoveNo,String[] status, String[] ClassType
//    )
//    {
//
//        String sql = CoreXmlSqlParsersFactory
//                .getSql("TmsDemand.doQuery");
//        if (!start.equals("")) {
//            sql += " AND M.TRANSPORT_START_TIME >=TO_DATE('" + start
//                    + "', 'YYYY-MM-DD HH24:MI:SS')";
//        }
//
//        if (!end.equals("")) {
//            sql += " AND M.TRANSPORT_START_TIME <=TO_DATE('" + end
//                    + "', 'YYYY-MM-DD HH24:MI:SS') ";
//        }
//
//        if(!"".equals(judgeStoveNo)){
//            sql += CoreConverter.toSqlConditionString("M.HEAT_NO", judgeStoveNo.replace("，",",").split(","));
//
//        }
//        if(!"".equals(flagStoveNo))
//        {
//            sql += CoreConverter.toSqlConditionString("M.LOGO_NO", flagStoveNo.replace("，",",").split(","));
//        }
//
//        sql += CoreConverter.toSqlConditionString("M.TRAN_CLASS_CODE", ClassType);
//
//        sql += CoreConverter.toSqlConditionString("M.VALIDFLAG", status);
//
//        sql += CoreConverter.toSqlConditionString("M.DEMAND_ORG_CODE", plinCodes);
//
//
//        sql += " Order by IS_SURE DESC , M.TRANSPORT_START_TIME";
//
//        return this.getData("TmsDao",sql);
//    }


//  TZH 24.4.24 注销物流接口
//    /**
//     * 查询需求
//     *
//     * @param
//     * @return
//     */
//    public CoreReturnObject doQueryPln(String[] plinCodes, String start, String end, String judgeStoveNo,String flagStoveNo,String carNo,String[] status, String[] ClassType
//    )
//    {
//
//        String sql = CoreXmlSqlParsersFactory
//                .getSql("TmsDemand.doQueryPln");
//        if (!start.equals("")) {
//            sql += " AND M.CREATE_TIME >=TO_DATE('" + start
//                    + "', 'YYYY-MM-DD HH24:MI:SS')";
//        }
//
//        if (!end.equals("")) {
//            sql += " AND M.CREATE_TIME <=TO_DATE('" + end
//                    + "', 'YYYY-MM-DD HH24:MI:SS') ";
//        }
//
//        if(!"".equals(judgeStoveNo)){
//            sql += "     and EXISTS (SELECT 1 FROM TMS_PLN_C WHERE  PLN_NO = M.PLN_NO " +
//                    CoreConverter.toSqlConditionString("HEAT_NO", judgeStoveNo.replace("，",",").split(","))
//                    +" )";
//        }
//        if(!"".equals(flagStoveNo))
//        {
//            sql += "     and EXISTS (SELECT 1 FROM TMS_PLN_C WHERE LOGO_NO= '"+  flagStoveNo +"'  AND PLN_NO = M.PLN_NO)";
//        }
//        if(!"".equals(carNo))
//        {
//            sql += " AND M.CAR_LICENSE LIKE '%"+carNo+"%'";
//        }
//        sql += CoreConverter.toSqlConditionString("M.TRAN_CLASS_CODE", ClassType);
//
//        sql += CoreConverter.toSqlConditionString("M.VALIDFLAG", status);
//
//
//        sql += CoreConverter.toSqlConditionString("M.DEMAND_ORG_CODE", plinCodes);
//
//        sql += " Order by M.TRANSPORT_START_TIME";
//
//        return this.getData("TmsDao",sql);
//    }
//
//    /**
//     * 查询需求
//     *
//     * @param
//     * @return
//     */
//    public CoreReturnObject doQueryPlnC(String[] PlnNo
//    )
//    {
//
//        String sql = CoreXmlSqlParsersFactory
//                .getSql("TmsDemand.doQueryPlnC");
//
//
//        sql += PlanService.toSqlConditionString("M.PLN_NO", PlnNo);
//
//        sql += " Order by TO_NUMBER(M.PLN_SQE)";
//
//        return this.getData("TmsDao",sql);
//    }

    /**
     * 查询需求
     *
     * @param
     * @return
     */
    public CoreReturnObject doQueryMat(String judgeStoveNo
    )
    {

        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.selectGroupMat");

        sql = sql.replace("#{flagStoveNo}",judgeStoveNo);
        return this.getData(sql);
    }
    
//  TZH 24.4.24 注销物流接口
//    /**
//     * 查询站点
//     *
//     * @return
//     */
//    public CoreReturnObject doQueryStation()
//    {
//
//        String sql = CoreXmlSqlParsersFactory
//                .getSql("TmsDemand.doQueryStation");
//
//        return this.getData("TmsDao",sql);
//    }


//    /**
//     * 查询车辆信息
//     *
//     * @param
//     * @return
//     */
//    public CoreReturnObject queryCar(String CarrierCode)
//    {
//
//        String sql = CoreXmlSqlParsersFactory
//                .getSql("TmsDemand.queryCar");
//        return this.getData("TmsDao",sql);
//    }

//  TZH 24.4.24 注销物流接口
//    public CoreReturnObject CloseDemand(String[] Demands, String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        PreparedStatement psta = null;
//
//        try {
//            connection.setAutoCommit(false); //
//            String sql = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.close");
//
//            if(Demands.length<=0){
//                core.setV_errMsg("请选择需要关闭的需求！");
//                return core;
//            }
//
//
//            for (int i = 0; i < Demands.length; i++) {
//                List<TmsPlnMEntity> tmsPlnMEntities = getPlnByDemand(connection,Demands[i]);
//                if(tmsPlnMEntities!=null){
//                    for (TmsPlnMEntity tmsPlnMEntity : tmsPlnMEntities) {
//                     /*   if("30".equals(tmsPlnMEntity.getValidflag())) {
//                            core.setV_errMsg("有正在执行中的计划,请等运单结再关闭！");
//                            return core;
//                        }*/
//                        if("20".equals(tmsPlnMEntity.getValidflag()) ){
//
//                            String sql1 = CoreXmlSqlParsersFactory
//                                    .getSql("TmsDemand.completePlan");
//                            PreparedStatement patUpdate = connection.prepareStatement(sql1);
//                            patUpdate.setObject(1, UseName);
//                            patUpdate.setObject(2, tmsPlnMEntity.getPlnNo());
//                            patUpdate.addBatch();
//                            patUpdate.executeBatch();
//                            patUpdate.close();
//
//                            String updateEndPlnC = CoreXmlSqlParsersFactory
//                                    .getSql("TmsDemand.updateEndPlnC");
//                            PreparedStatement patupdateEndPlnC = connection.prepareStatement(updateEndPlnC);
//                            patupdateEndPlnC.setObject(1,tmsPlnMEntity.getPlnNo());
//                            patupdateEndPlnC.addBatch();
//                            patupdateEndPlnC.executeBatch();
//                            patupdateEndPlnC.close();
//
//                            if(tmsPlnMEntity.getCarLicense()!=null && !tmsPlnMEntity.getCarLicense().equals("")){
//                                String updateCar = CoreXmlSqlParsersFactory
//                                        .getSql("TmsDemand.updateCar");
//                                PreparedStatement patUpdateCar = connection.prepareStatement(updateCar);
//                                patUpdateCar.setObject(1,tmsPlnMEntity.getCarLicense());
//                                patUpdateCar.addBatch();
//                                patUpdateCar.executeBatch();
//                                patUpdateCar.close();
//                            }
//
//                        }
//
//
//
//                    }
//                }
//            }
//
//
//            sql +=CoreConverter.toSqlConditionString("DEMAND_NO", Demands);
//
//            PreparedStatement patClose = connection.prepareStatement(sql);
//            patClose.setObject(1,UseName);
//            patClose.addBatch();
//            patClose.executeBatch();
//
//
//            core.setV_errMsg("关闭成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }
//

//  TZH 24.4.24 注销物流接口
//    public CoreReturnObject recover(String[] Demands, String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        PreparedStatement psta = null;
//
//        try {
//            connection.setAutoCommit(false); //
//            String sql = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.recover");
//
//            if(Demands.length<=0){
//                core.setV_errMsg("请选择需要还原的需求！");
//                return core;
//            }
//
//            sql +=CoreConverter.toSqlConditionString("DEMAND_NO", Demands);
//
//            PreparedStatement patClose = connection.prepareStatement(sql);
//            patClose.setObject(1,UseName);
//            patClose.addBatch();
//            patClose.executeBatch();
//
//            core.setV_errMsg("还原成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }
//

//  TZH 24.4.24 注销物流接口
//    public CoreReturnObject updateDate(ArrayList<String> Demands, String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        PreparedStatement psta = null;
//
//        SimpleDateFormat dateFormat = new SimpleDateFormat(
//                "yyyy-MM-dd HH:mm", Locale.CHINA);
//
//        try {
//            connection.setAutoCommit(false); //
//            String sql = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.updateDate");
//
//            if(Demands.size()<=0){
//                core.setV_errMsg("请选择需要调整时间的需求！");
//                return core;
//            }
//            PreparedStatement patUpdate = connection.prepareStatement(sql);
//
//            for (String demand : Demands) {
//               TmsDemandM tmsDemandM =  EntityTool.getEntityByJSONStr(demand,TmsDemandM.class);
//
//                TmsDemandM temp =  getTmsDemandByKey(connection,tmsDemandM.getDemandNo());
//                if("1".equals(temp.getIsSure())){
//                    throw new Exception("已确认需求不允许修改!");
//                }
//
//                patUpdate.setObject(1,tmsDemandM.getTransportStartTime());
//                patUpdate.setObject(2,tmsDemandM.getTransportEndTime());
//                patUpdate.setObject(3,tmsDemandM.getStartNodeCode());
//                patUpdate.setObject(4,tmsDemandM.getStartNodeDesc());
//                patUpdate.setObject(5,tmsDemandM.getStartAreaCode());
//                patUpdate.setObject(6,tmsDemandM.getStartAreaDesc());
//                patUpdate.setObject(7,tmsDemandM.getEndNodeCode());
//                patUpdate.setObject(8,tmsDemandM.getEndNodeDesc());
//                patUpdate.setObject(9,tmsDemandM.getEndAreaCode());
//                patUpdate.setObject(10,tmsDemandM.getEndAreaDesc());
//                patUpdate.setObject(11,tmsDemandM.getMemo());
//                patUpdate.setObject(12,UseName);
//                patUpdate.setObject(13,tmsDemandM.getDemandNo());
//                patUpdate.addBatch();
//
//            }
//
//
//            patUpdate.executeBatch();
//
//            core.setV_errMsg("保存成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }


//  TZH 24.4.24 注销物流接口
//   public  CoreReturnObject Assign(ArrayList<String> Demands, ArrayList<String> Cars, String StartNode,String EndNode, String UseName){
//       CoreReturnObject core = new CoreReturnObject();
//       Connection connection = this.getDao("TmsDao")
//               .getConnection();
//
//       try {
//           connection.setAutoCommit(false); //
//           String sql = CoreXmlSqlParsersFactory
//                   .getSql("TmsDemand.updateDate");
//
//           if(Cars.size()<=0){
//               throw new Exception("请选择需要分派的车辆！");
//           }
//
//           if (Demands.size() <= 0) {
//               throw new Exception("请选择需要分派的需求");
//           }
//
//
//           List<TmsDemandM> assignDemand = new ArrayList<TmsDemandM>();
//
//           for (int i = 0; i < Demands.size(); i++) {
//               TmsDemandM tmsDemandM =    EntityTool.getEntityByJSONStr(Demands.get(i),TmsDemandM.class);
//
//               TmsDemandM temp =  getTmsDemandByKey(connection,tmsDemandM.getDemandNo());
//               if (temp == null) {
//                   throw new Exception("找不到需求数据, 请刷新界面");
//               }
//               if (!temp.getStatus().equals("20")) {
//                   throw new Exception("需求未审核通过");
//               }
//
//               if (!temp.getValidflag().equals("30") && !temp.getValidflag().equals("20")) {
//                   throw new Exception("只有未分派或已执行的需求才能分派计划");
//               }
//
//
//              if ("SC".equals(temp.getCarUseCode()) && !"TS".equals(temp.getTranClassCode())
//                      && new BigDecimal(temp.getCanPlanQtyVal())
//                      .compareTo(BigDecimal.ZERO) <= 0) {
//                   throw new Exception("需求无足够的需求量, 若该需求未关闭,请手动关闭需求");
//               }
//
//               if ("SC".equals(temp.getCarUseCode()) && !"TS".equals(temp.getTranClassCode()) && ( temp.getStartNodeCode() == null || temp.getEndNodeCode() == null )) {
//                   throw new Exception("需求的起始站点或终点不能为空, 请指定!");
//               }
//
//               if ((temp.getStartNodeDesc() == null || temp.getEndNodeDesc() == null )) {
//                   throw new Exception("需求的起始站点或终点不能为空, 请指定!");
//               }
//
//
//               assignDemand.add(temp);
//           }
//           
//          
//
//           String msg = RuleServer.CheckRuleEachModels(connection,"HBFP",new ArrayList<Object>(assignDemand));
//           if (!msg.equals(""))  throw new Exception(msg);
//
//
//           for (String carEditStr : Cars
//                   ) {
//
//               TmsCarBaseEntity carEdit =    EntityTool.getEntityByJSONStr(carEditStr,TmsCarBaseEntity.class);
//               if(StringUtil.isEmpty(carEdit.getCarDemandQty())){
//                   carEdit.setCarDemandQty("0");
//                   carEdit.setCarDemandWt("0");
//               }
//
//               TmsCarBaseEntity CarInfo = getCarByKey(connection, carEdit.getCarLicense());
//
//               if (!CarInfo.getCarStatusCode().equals("CST01")) {
//                   throw new Exception("只有运营状态的车辆才允许被分派计划");
//               }
//
//               msg = RuleServer.CheckRule(connection, "FPXZ",new ArrayList<iRule>(assignDemand), CarInfo);
//               if (!msg.equals(""))  throw new Exception(msg);
//
//
//
//               String title ="";
//               String Content = "";
//
//               if (!"SC".equals(assignDemand.get(0).getCarUseCode()) || "TS".equals(assignDemand.get(0).getTranClassCode())) {
//
//                   TmsPlnMEntity NewPln = new TmsPlnMEntity();
//                   NewPln.setPlnNo(GetNewID(connection, assignDemand.get(0).getTranClassCode()));
//                   NewPln.setPlnDesc(assignDemand.get(0).getDemandDesc());
//                   NewPln.setUrgencyTypeCode(assignDemand.get(0).getUrgencyTypeCode());
//                   NewPln.setUrgencyTypeDesc(assignDemand.get(0).getUrgencyTypeDesc());
//                   NewPln.setTranClassCode(assignDemand.get(0).getTranClassCode());
//                   NewPln.setTranClassDesc(assignDemand.get(0).getTranClassDesc());
//                   NewPln.setCostTypeCode(assignDemand.get(0).getCostTypeCode());
//                   NewPln.setCostTypeDesc(assignDemand.get(0).getCostTypeDesc());
//
//                   NewPln.setDemandOrgCode(assignDemand.get(0).getDemandOrgCode());
//                   NewPln.setDemandOrgDesc(assignDemand.get(0).getDemandOrgDesc());
//
//                   NewPln.setCarUseCode(assignDemand.get(0).getCarUseCode());
//                   NewPln.setCarUseDesc(assignDemand.get(0).getCarUseDesc());
//
//                   NewPln.setCarTypeCode(carEdit.getCarTypeCode());
//                   NewPln.setCarTypeDesc(carEdit.getCarTypeDesc());
//                   //NewPln.setCarrierCode(assignDemand.get(0).getCarrierCode());
//                  // NewPln.setCarrierName(assignDemand.get(0).getCarrierName());
//
//                   NewPln.setCarrierCode(carEdit.getCarrierCode());
//                    NewPln.setCarrierName(carEdit.getCarrierName());
//
//                   NewPln.setWeighingIf(assignDemand.get(0).getWeighingIf());
//
//                   NewPln.setSourceSign("0");
//                   NewPln.setValidflag("20");
//                   NewPln.setStatus("20");
//                   NewPln.setCreateUserid("");
//                   NewPln.setCreateName(UseName);
//
//                   NewPln.setCarLicense(carEdit.getCarLicense());
//
//                   if ("TS".equals(assignDemand.get(0).getTranClassCode())) {
//
//                       //取各需求的起点终点去重  查找所经过这些点的路线
//                       ArrayList<String> StartNodes = new ArrayList<String>();
//                       ArrayList<String> EndNodes = new ArrayList<String>();
//
//
//
//                       for (TmsDemandM t1 :assignDemand
//                            ) {
//                            if(!StartNodes.contains(t1.getStartNodeCode())) StartNodes.add(t1.getStartNodeCode());
//                           if(!EndNodes.contains(t1.getEndNodeCode())) EndNodes.add(t1.getEndNodeCode());
//
//                           if(NewPln.getTransportStartTime()==null  ) NewPln.setTransportStartTime(t1.getTransportStartTime());
//                           if(NewPln.getTransportEndTime()==null  ) NewPln.setTransportEndTime(t1.getTransportEndTime());
//
//                       }
//
//                       //指定了卸货点
//                       if (!StringUtil.isEmpty(EndNode)) {
//                           EndNodes= new ArrayList<String>();
//                           EndNodes.add(EndNode);
//                       }
//
//
//                       TmsComLineMEntity line = GetLine(connection, StartNodes, EndNodes,true);
//                       if (line == null || line.getStartNodeCode() == null || line.getEndNodeCode() == null)
//                           throw new Exception("未找到该起点终点的路线,请先维护路线");
//
//                       NewPln.setLineCode(line.getLineCode());
//                       NewPln.setLineDesc(line.getLineDesc());
//                       NewPln.setStartNodeCode(line.getStartNodeCode());
//                       NewPln.setStartNodeDesc(line.getStartNodeDesc());
//                       NewPln.setStartAreaCode(line.getStartAreaCode());
//                       NewPln.setStartAreaDesc(line.getStartAreaDesc());
//
//                       NewPln.setEndNodeCode(line.getEndNodeCode());
//                       NewPln.setEndNodeDesc(line.getEndNodeDesc());
//                       NewPln.setEndAreaCode(line.getEndAreaCode());
//                       NewPln.setEndAreaDesc(line.getEndAreaDesc());
//                   } else {
//                       NewPln.setLineDesc(assignDemand.get(0).getStartNodeDesc() + "->" + assignDemand.get(0).getEndNodeDesc());
//                       NewPln.setStartNodeCode(assignDemand.get(0).getStartNodeDesc());
//                       NewPln.setEndNodeCode(assignDemand.get(0).getEndNodeDesc());
//                       NewPln.setStartNodeDesc(assignDemand.get(0).getStartNodeDesc());
//                       NewPln.setEndNodeDesc(assignDemand.get(0).getEndNodeDesc());
//                       title = "";
//                   }
//
//
//                   String InsertSql = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.insertPlnM");
//                   InsertSql = EntityTool.fillSqlByEntity(InsertSql, NewPln);
//                   PreparedStatement patUpdate = connection.prepareStatement(InsertSql);
//                   patUpdate.addBatch();
//                   patUpdate.executeBatch();
//
//
//
//                   title = "【计划分派】" +NewPln.getDemandOrgDesc();
//                   Content = NewPln.getLineDesc() + "  " + NewPln.getCarLicense() + "  " ;
//
//                   for (int i = 0; i < assignDemand.size(); i++) {
//
//                       TmsPlnCEntity tmsPlnC = new TmsPlnCEntity();
//                       //计划子表 计划量  取需求量和车辆分派量 最小的
//                       tmsPlnC.setPlnNo(NewPln.getPlnNo());
//                       tmsPlnC.setPlnSqe(String.format("%03d", i + 1));
//                       tmsPlnC.setDemandNo(assignDemand.get(i).getDemandNo());
//                       tmsPlnC.setRefeNo(assignDemand.get(i).getRefeNo());
//                       tmsPlnC.setHeatNo(assignDemand.get(i).getHeatNo());
//                       tmsPlnC.setBatchNo(assignDemand.get(i).getBatchNo());
//                       tmsPlnC.setLogoNo(assignDemand.get(i).getLogoNo());
//                       tmsPlnC.setGroupNo(assignDemand.get(i).getGroupNo());
//                       tmsPlnC.setMaterialsCode(assignDemand.get(i).getMaterialsCode());
//                       tmsPlnC.setMaterialsDesc(assignDemand.get(i).getMaterialsDesc());
//                       tmsPlnC.setMaterialsSpec(assignDemand.get(i).getMaterialsSpec());
//                       tmsPlnC.setUomCode(assignDemand.get(i).getUomCode());
//                       tmsPlnC.setUomDesc(assignDemand.get(i).getUomDesc());
//                       tmsPlnC.setProOrderNo(assignDemand.get(i).getProOrderNo());
//                       tmsPlnC.setProOrderSqe(assignDemand.get(i).getProOrderSqe());
//                       tmsPlnC.setPreviousJobNo(assignDemand.get(i).getCurrentJobNo());
//                       tmsPlnC.setCurrentJobNo(assignDemand.get(i).getCurrentJobNo());
//                       tmsPlnC.setPlnQtyVal("0");
//                       tmsPlnC.setPlnWtVal("0");
//                       tmsPlnC.setCreateUserid("");
//                       tmsPlnC.setCreateName(UseName);
//
//
//                       String InsertCSql = CoreXmlSqlParsersFactory
//                               .getSql("TmsDemand.insertPlnC");
//                       InsertCSql = EntityTool.fillSqlByEntity(InsertCSql, NewPln);
//                       PreparedStatement patInsert = connection.prepareStatement(InsertCSql);
//                       patInsert.addBatch();
//                       patInsert.executeBatch();
//
//                   }
//
//                   String updateDemand = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.updateDemand");
//                   InsertSql = EntityTool.fillSqlByEntity(InsertSql, NewPln);
//                   PreparedStatement patUpdateDemand = connection.prepareStatement(updateDemand);
//                   patUpdateDemand.setObject(1,NewPln.getPlnNo());
//                   patUpdateDemand.addBatch();
//                   patUpdateDemand.executeBatch();
//
//
//                   String updateCar = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.updateCar");
//                   InsertSql = EntityTool.fillSqlByEntity(InsertSql, NewPln);
//                   PreparedStatement patUpdateCar = connection.prepareStatement(updateCar);
//                   patUpdateCar.setObject(1,carEdit.getCarLicense());
//                   patUpdateCar.addBatch();
//                   patUpdateCar.executeBatch();
//
//
//
//               } else {
//
//
//                   if (carEdit.getCarDemandQty() == null || new BigDecimal(carEdit.getCarDemandQty()).compareTo(BigDecimal.ZERO) < 0) {
//                       continue;
//                   }
//
//
//                   TmsPlnMEntity NewPln = new TmsPlnMEntity();
//                   NewPln.setPlnNo(GetNewID(connection, assignDemand.get(0).getTranClassCode()));
//
//                   List<TmsDemandM> UsedDemand = new ArrayList<TmsDemandM>();
//
//
//
//                   ArrayList<String> StartNodes = new ArrayList<String>();
//                   ArrayList<String> EndNodes = new ArrayList<String>();
//
//
//                   for (TmsDemandM t1 :assignDemand
//                           ) {
//                       if(!StartNodes.contains(t1.getStartNodeCode())) StartNodes.add(t1.getStartNodeCode());
//                       if(!EndNodes.contains(t1.getEndNodeCode())) EndNodes.add(t1.getEndNodeCode());
//
//                       if(NewPln.getTransportStartTime()==null  ) NewPln.setTransportStartTime(t1.getTransportStartTime());
//                       if(NewPln.getTransportEndTime()==null  ) NewPln.setTransportEndTime(t1.getTransportEndTime());
//
//                   }
//
//                   //指定了卸货点
//                   if (!StringUtil.isEmpty(EndNode)) {
//                       EndNodes= new ArrayList<String>();
//                       EndNodes.add(EndNode);
//                   }
//
//
//                   TmsComLineMEntity line = GetLine(connection, StartNodes, EndNodes,true);
//                   if (line == null || line.getStartNodeCode() == null || line.getEndNodeCode() == null)
//                       throw new Exception("未找到该起点终点的路线,请先维护路线");
//
//
//
//                   for (int i = 0; i < assignDemand.size() ; i++) {
//
//
//
//                       TmsPlnCEntity tmsPlnC = new TmsPlnCEntity();
//                       //计划子表 计划量  取需求量和车辆分派量 最小的
//                       tmsPlnC.setPlnNo(NewPln.getPlnNo());
//                       tmsPlnC.setPlnSqe(String.format("%03d", i + 1));
//                       tmsPlnC.setDemandNo(assignDemand.get(i).getDemandNo());
//                       tmsPlnC.setRefeNo(assignDemand.get(i).getRefeNo());
//                       tmsPlnC.setHeatNo(assignDemand.get(i).getHeatNo());
//                       tmsPlnC.setBatchNo(assignDemand.get(i).getBatchNo());
//                       tmsPlnC.setLogoNo(assignDemand.get(i).getLogoNo());
//                       tmsPlnC.setGroupNo(assignDemand.get(i).getGroupNo());
//                       tmsPlnC.setMaterialsCode(assignDemand.get(i).getMaterialsCode());
//                       tmsPlnC.setMaterialsDesc(assignDemand.get(i).getMaterialsDesc());
//                       tmsPlnC.setMaterialsSpec(assignDemand.get(i).getMaterialsSpec());
//                       tmsPlnC.setUomCode(assignDemand.get(i).getUomCode());
//                       tmsPlnC.setUomDesc(assignDemand.get(i).getUomDesc());
//                       tmsPlnC.setProOrderNo(assignDemand.get(i).getProOrderNo());
//                       tmsPlnC.setProOrderSqe(assignDemand.get(i).getProOrderSqe());
//                       tmsPlnC.setPreviousJobNo(assignDemand.get(i).getCurrentJobNo());
//                       tmsPlnC.setCurrentJobNo(assignDemand.get(i).getCurrentJobNo());
//                       tmsPlnC.setPlnQtyVal(new BigDecimal(carEdit.getCarDemandQty()).min(new BigDecimal(assignDemand.get(i).getCanPlanQtyVal())) +"");
//                       tmsPlnC.setPlnWtVal(new BigDecimal(carEdit.getCarDemandWt()).min(new BigDecimal(assignDemand.get(i).getCanPlanWtVal())) + "");
//                       tmsPlnC.setCreateUserid("");
//                       tmsPlnC.setCreateName(UseName);
//
//                       if(!StringUtil.isEmpty(EndNode)){
//                           tmsPlnC.setEndNodeCode(line.getEndNodeCode());
//                           tmsPlnC.setEndNodeDesc(line.getEndNodeDesc());
//                           tmsPlnC.setEndAreaCode(line.getEndAreaCode());
//                           tmsPlnC.setEndAreaDesc(line.getEndAreaDesc());
//                       }else {
//                           tmsPlnC.setEndNodeCode(assignDemand.get(i).getEndNodeCode());
//                           tmsPlnC.setEndNodeDesc(assignDemand.get(i).getEndNodeDesc());
//                           tmsPlnC.setEndAreaCode(assignDemand.get(i).getEndAreaCode());
//                           tmsPlnC.setEndAreaDesc(assignDemand.get(i).getEndAreaDesc());
//                       }
//
//                       tmsPlnC.setStartNodeCode(assignDemand.get(i).getStartNodeCode());
//                       tmsPlnC.setStartNodeDesc(assignDemand.get(i).getStartNodeDesc());
//                       tmsPlnC.setStartAreaCode(assignDemand.get(i).getStartAreaCode());
//                       tmsPlnC.setStartAreaDesc(assignDemand.get(i).getStartAreaDesc());
//
//
//
//                       //分派量
//                       carEdit.setCarDemandQty(new BigDecimal(carEdit.getCarDemandQty()).subtract(new BigDecimal(tmsPlnC.getPlnQtyVal())).toString());
//                       carEdit.setCarDemandWt(new BigDecimal(carEdit.getCarDemandWt()).subtract(new BigDecimal(tmsPlnC.getPlnWtVal())).toString());
//
//                       assignDemand.get(i).setUnPlanQtyVal(new BigDecimal(assignDemand.get(i).getCanPlanQtyVal()).subtract(
//                               new BigDecimal(tmsPlnC.getPlnQtyVal())).toString());
//                       assignDemand.get(i).setUnPlanWtVal(new BigDecimal(assignDemand.get(i).getCanPlanWtVal()).subtract(
//                               new BigDecimal(tmsPlnC.getPlnWtVal())).toString());
//
//
//                       UsedDemand.add(assignDemand.get(i));
//
//
//                       String InsertCSql = CoreXmlSqlParsersFactory
//                               .getSql("TmsDemand.insertPlnC");
//                       InsertCSql = EntityTool.fillSqlByEntity(InsertCSql, tmsPlnC);
//                       PreparedStatement patInsert = connection.prepareStatement(InsertCSql);
//                       patInsert.addBatch();
//                       patInsert.executeBatch();
//
//                   }
//
//                   if (new BigDecimal(carEdit.getCarDemandQty()).compareTo(BigDecimal.ZERO) > 0) {
//                       throw new Exception( "分派给车辆的量过多");
//                   }
//
//                   if (UsedDemand.size() <= 0) {
//                       throw new Exception( "分派给车辆的量过多");
//                   }
//
//                   //暂以第一个需求为主信息
//                   NewPln.setPlnDesc(UsedDemand.get(0).getDemandDesc());
//                   NewPln.setUrgencyTypeCode(UsedDemand.get(0).getUrgencyTypeCode());
//                   NewPln.setUrgencyTypeDesc(UsedDemand.get(0).getUrgencyTypeDesc());
//                   NewPln.setTranClassCode(UsedDemand.get(0).getTranClassCode());
//                   NewPln.setTranClassDesc(UsedDemand.get(0).getTranClassDesc());
//                   NewPln.setCostTypeCode(UsedDemand.get(0).getCostTypeCode());
//                   NewPln.setCostTypeDesc(UsedDemand.get(0).getCostTypeDesc());
//
//                   NewPln.setDemandOrgCode(UsedDemand.get(0).getDemandOrgCode());
//                   NewPln.setDemandOrgDesc(UsedDemand.get(0).getDemandOrgDesc());
//
//                   NewPln.setCarUseCode(UsedDemand.get(0).getCarUseCode());
//                   NewPln.setCarUseDesc(UsedDemand.get(0).getCarUseDesc());
//
//
//                   NewPln.setCarTypeCode(carEdit.getCarTypeCode());
//                   NewPln.setCarTypeDesc(carEdit.getCarTypeDesc());
//                   //NewPln.setCarrierCode(assignDemand.get(0).getCarrierCode());
//                   // NewPln.setCarrierName(assignDemand.get(0).getCarrierName());
//
//                   NewPln.setCarrierCode(carEdit.getCarrierCode());
//                   NewPln.setCarrierName(carEdit.getCarrierName());
//
//                   NewPln.setWeighingIf(UsedDemand.get(0).getWeighingIf());
//
//                   NewPln.setSourceSign("0");
//                   NewPln.setValidflag("20");
//                   NewPln.setStatus("20");
//                   NewPln.setCreateUserid("");
//                   NewPln.setCreateName(UseName);
//
//                   NewPln.setCarLicense(carEdit.getCarLicense());
//
//
//
//
//
//                   NewPln.setLineCode(line.getLineCode());
//                   NewPln.setLineDesc(line.getLineDesc());
//                   NewPln.setStartNodeCode(line.getStartNodeCode());
//                   NewPln.setStartNodeDesc(line.getStartNodeDesc());
//                   NewPln.setStartAreaCode(line.getStartAreaCode());
//                   NewPln.setStartAreaDesc(line.getStartAreaDesc());
//
//                   NewPln.setEndNodeCode(line.getEndNodeCode());
//                   NewPln.setEndNodeDesc(line.getEndNodeDesc());
//                   NewPln.setEndAreaCode(line.getEndAreaCode());
//                   NewPln.setEndAreaDesc(line.getEndAreaDesc());
//
//
//
//                   String InsertSql = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.insertPlnM");
//                   InsertSql = EntityTool.fillSqlByEntity(InsertSql, NewPln);
//                   PreparedStatement patUpdate = connection.prepareStatement(InsertSql);
//                   patUpdate.addBatch();
//                   patUpdate.executeBatch();
//
//
//                   title = "【计划分派】" +NewPln.getDemandOrgDesc();
//                   Content = NewPln.getLineDesc() + "  " + NewPln.getCarLicense() + "  " ;
//
//                   String updateDemand = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.updateDemand");
//                   PreparedStatement patUpdateDemand = connection.prepareStatement(updateDemand);
//                   patUpdateDemand.setObject(1,NewPln.getPlnNo());
//                   patUpdateDemand.addBatch();
//                   patUpdateDemand.executeBatch();
//
//
//                   String updateCar = CoreXmlSqlParsersFactory
//                           .getSql("TmsDemand.updateCar");
//                   PreparedStatement patUpdateCar = connection.prepareStatement(updateCar);
//                   patUpdateCar.setObject(1,carEdit.getCarLicense());
//                   patUpdateCar.addBatch();
//                   patUpdateCar.executeBatch();
//               }
//
//
//
//               String MessageNo  = GetMessageID(connection);
//
//               String insertMessage = CoreXmlSqlParsersFactory
//                       .getSql("TmsDemand.InsertMessageM");
//               PreparedStatement patInsertMessage = connection.prepareStatement(insertMessage);
//               patInsertMessage.setObject(1,MessageNo);
//               patInsertMessage.setObject(2,title);
//               patInsertMessage.setObject(3,Content);
//               patInsertMessage.setObject(4,UseName);
//               patInsertMessage.setObject(5,UseName);
//               patInsertMessage.addBatch();
//               patInsertMessage.executeBatch();
//
//
//               String insertMessageTarget = CoreXmlSqlParsersFactory
//                       .getSql("TmsDemand.InsertMessageTarget");
//               PreparedStatement patInsertMessageTarget = connection.prepareStatement(insertMessageTarget);
//               patInsertMessageTarget.setObject(1,MessageNo);
//               patInsertMessageTarget.setObject(2, carEdit.getCarLicense());
//               patInsertMessageTarget.addBatch();
//               patInsertMessageTarget.executeBatch();
//
//               String insertMessageUser = CoreXmlSqlParsersFactory
//                       .getSql("TmsDemand.InsertMessageUser");
//               PreparedStatement patInsertMessageUser = connection.prepareStatement(insertMessageUser);
//               patInsertMessageUser.setObject(1,MessageNo);
//               patInsertMessageUser.setObject(2, carEdit.getCarLicense());
//               patInsertMessageUser.setObject(3,MessageNo);
//               patInsertMessageUser.setObject(4, carEdit.getCarLicense());
//               patInsertMessageUser.addBatch();
//               patInsertMessageUser.executeBatch();
//
//
//           }
//
//
//
//           core.setV_errMsg("分派成功！");
//           core.setResult(1);
//           connection.commit();
//       }
//       catch (Exception e) {
//           core.setV_errMsg(e.getMessage());
//           if (connection != null) {
//               try {
//                   connection.rollback(); // 回滚事务
//               }
//               catch (Exception e2) {
//               }
//           }
//       }
//       finally {
//           try {
//               if (connection != null && !connection.isClosed()) {
//                   connection.close();
//               }
//           }
//           catch (Exception e2) {
//           }
//       }
//       return core;
//
//   }

//  TZH 24.4.24 注销物流接口
//    public CoreReturnObject completePlan(ArrayList<String> plnNos, String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        PreparedStatement psta = null;
//
//        SimpleDateFormat dateFormat = new SimpleDateFormat(
//                "yyyy-MM-dd HH:mm", Locale.CHINA);
//
//        try {
//            connection.setAutoCommit(false); //
//            String sql = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.completePlan");
//
//            if(plnNos.size()<=0){
//
//                throw new Exception("请选择需要结束的计划");
//            }
//            PreparedStatement patUpdate = connection.prepareStatement(sql);
//
//            for (String plnNo : plnNos) {
//
//               TmsPlnMEntity tmsPlnMEntity = getPlnByKey(connection,plnNo);
//
//                if (tmsPlnMEntity == null)  throw new Exception("找不到计划,建议刷新数据再操作！");
//
//                if (!tmsPlnMEntity.getValidflag().equals("20") && !tmsPlnMEntity.getValidflag().equals("10"))  throw new Exception("只有待运输/待调度状态才允许结束计划!");
//
//                if (tmsPlnMEntity.getWaybilCount()==null || Integer.parseInt(tmsPlnMEntity.getWaybilCount())<0)  throw new Exception("该计划未执行过运单,不允许结束计划!");
//
//
//                patUpdate.setObject(1, UseName);
//                patUpdate.setObject(2, plnNo);
//                patUpdate.addBatch();
//                patUpdate.executeBatch();
//                patUpdate.close();
//
//                String updateEndPlnC = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.updateEndPlnC");
//                PreparedStatement patupdateEndPlnC = connection.prepareStatement(updateEndPlnC);
//                patupdateEndPlnC.setObject(1,tmsPlnMEntity.getPlnNo());
//                patupdateEndPlnC.addBatch();
//                patupdateEndPlnC.executeBatch();
//                patupdateEndPlnC.close();
//
//                if(tmsPlnMEntity.getCarLicense()!=null && !tmsPlnMEntity.getCarLicense().equals("")){
//                    String updateCar = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.updateCar");
//                    PreparedStatement patUpdateCar = connection.prepareStatement(updateCar);
//                    patUpdateCar.setObject(1,tmsPlnMEntity.getCarLicense());
//                    patUpdateCar.addBatch();
//                    patUpdateCar.executeBatch();
//                    patUpdateCar.close();
//                }
//
//
//
//                String updateDemand = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.updateDemand");
//                PreparedStatement patUpdateDemand = connection.prepareStatement(updateDemand);
//                patUpdateDemand.setObject(1,tmsPlnMEntity.getPlnNo());
//                patUpdateDemand.addBatch();
//                patUpdateDemand.executeBatch();
//                patUpdateDemand.close();
//
//            }
//
//
//
//
//            core.setV_errMsg("结束成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }

//  TZH 24.4.24 注销物流接口
//    public CoreReturnObject closePlan(ArrayList<String> plnNos, String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        PreparedStatement psta = null;
//
//        SimpleDateFormat dateFormat = new SimpleDateFormat(
//                "yyyy-MM-dd HH:mm", Locale.CHINA);
//
//        try {
//            connection.setAutoCommit(false); //
//            String sql = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.closePlan");
//
//            if(plnNos.size()<=0){
//                core.setV_errMsg("请选择需要删除的计划！");
//                return core;
//            }
//
//
//            PreparedStatement patUpdate = connection.prepareStatement(sql);
//
//            for (String plnNo : plnNos) {
//
//                TmsPlnMEntity tmsPlnMEntity = getPlnByKey(connection,plnNo);
//
//                if (tmsPlnMEntity == null)  throw new Exception("找不到计划,建议刷新数据再操作！");
//
//                if (!tmsPlnMEntity.getValidflag().equals("20") && !tmsPlnMEntity.getValidflag().equals("10"))  throw new Exception("只有待运输/待调度状态才允许删除计划!");
//
//                if (tmsPlnMEntity.getWaybilCount()==null || Integer.parseInt(tmsPlnMEntity.getWaybilCount())<0)  throw new Exception("该计划已执行过运单,不允许删除计划!");
//
//
//                patUpdate.setObject(1, UseName);
//                patUpdate.setObject(2, plnNo);
//                patUpdate.addBatch();
//                patUpdate.executeBatch();
//
//
//
//                if(tmsPlnMEntity.getCarLicense()!=null && !tmsPlnMEntity.getCarLicense().equals("")){
//                    String updateCar = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.updateCar");
//                    PreparedStatement patUpdateCar = connection.prepareStatement(updateCar);
//                    patUpdateCar.setObject(1,tmsPlnMEntity.getCarLicense());
//                    patUpdateCar.addBatch();
//                    patUpdateCar.executeBatch();
//                }
//
//                String updateDemand = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.updateDemand");
//                PreparedStatement patUpdateDemand = connection.prepareStatement(updateDemand);
//                patUpdateDemand.setObject(1,tmsPlnMEntity.getPlnNo());
//                patUpdateDemand.addBatch();
//                patUpdateDemand.executeBatch();
//
//            }
//
//
//
//            core.setV_errMsg("删除成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }


    public  TmsDemandM getTmsDemandByKey(Connection con,
                                                       String demandNo) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.doQuery");
        sql += " AND  M.DEMAND_NO = '"+ demandNo +"'";
        PreparedStatement ps = con.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        List<TmsDemandM> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsDemandM.class);
        rs.close();
        ps.close();

        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            return null;
        } else {
            for (TmsDemandM tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }
/*

    public  ComBasePlineEntity getPlineCodeByKey(Connection con,
                                         String plineCode) throws SQLException {
        if(StringUtil.isEmpty(plineCode)) return null;

        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.doQueryPline");
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setObject(1,plineCode);
        ResultSet rs = ps.executeQuery();
        List<ComBasePlineEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                ComBasePlineEntity.class);
        rs.close();
        ps.close();
        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            return null;
        } else {
            for (ComBasePlineEntity tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }
*/


    public  List<TmsPlnMEntity> getPlnByDemand(Connection con,
                                         String demandNo) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.doQueryPln");
    /*    sql += " AND  M.PLN_NO = '"+ plnNo +"'";

        sql += " AND  M.PLN_NO = '"+ plnNo +"'";*/
        sql += " AND  EXISTS (SELECT 1 FROM TMS_PLN_C WHERE PLN_NO = M.PLN_NO AND DEMAND_NO = '" +   demandNo +"' ) ";

        PreparedStatement ps = con.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        List<TmsPlnMEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsPlnMEntity.class);
        rs.close();
        ps.close();

        return tmsDemandMS;
    }

    public  List<TmsWaybillMEntity> getWaybillByKey(Connection con,
                                      String plnNo) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.doQueryWaybill");
        sql += " AND  M.PLN_NO = '"+ plnNo +"'";
        PreparedStatement ps = con.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        List<TmsWaybillMEntity> list = EntityTool.getEntitysByRs(rs,
                TmsWaybillMEntity.class);
        rs.close();
        ps.close();
        return list;

    }

    public  TmsCarBaseEntity getCarByKey(Connection con,
                                         String carno) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.getCarByKey");
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setObject(1, carno);
        ResultSet rs = ps.executeQuery();
        List<TmsCarBaseEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsCarBaseEntity.class);
        rs.close();
        ps.close();
        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            return null;
        } else {
            for (TmsCarBaseEntity tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }

    public  TmsPlnMEntity getPlnByKey(Connection con,
                                      String plnNo) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.doQueryPln");
        sql += " AND  M.PLN_NO = '"+ plnNo +"'";
        PreparedStatement ps = con.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        List<TmsPlnMEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsPlnMEntity.class);
        rs.close();
        ps.close();
        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            return null;
        } else {
            for (TmsPlnMEntity tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }


    public String GetNewID(Connection con,String TranClass) throws SQLException {
        String ID= "";

        //获取最大实绩编号
        String sql =   CoreXmlSqlParsersFactory
                .getSql("TmsDemand.GetNewID");
        PreparedStatement psta = con.prepareStatement(sql);
        psta.setObject(1, TranClass );
        psta.setObject(2, TranClass );
        ResultSet rs1 = psta.executeQuery();
        if (rs1.next()) {
            ID = rs1.getString("PLN_NO");
        }
        rs1.close();
        psta.close();

        return ID;
    }


    public String GetLineNewID(Connection con) throws SQLException {
        String ID= "";

        //获取最大实绩编号
        String sql =   CoreXmlSqlParsersFactory
                .getSql("TmsDemand.getLineID");
        PreparedStatement psta = con.prepareStatement(sql);
        ResultSet rs1 = psta.executeQuery();
        if (rs1.next()) {
            ID = rs1.getString("LINE_CODE");
        }
        rs1.close();
        psta.close();

        return ID;
    }


    public String GetMessageID(Connection con) throws SQLException {
        String ID= "";

        //获取最大实绩编号
        String sql =   CoreXmlSqlParsersFactory
                .getSql("TmsDemand.GetMessageNo");
        PreparedStatement psta = con.prepareStatement(sql);
        ResultSet rs1 = psta.executeQuery();
        if (rs1.next()) {
            ID = rs1.getString("MESSAGE_NO");
        }
        rs1.close();
        psta.close();

        return ID;
    }


    public TmsComLineMEntity GetLine(Connection con, ArrayList<String> Start, ArrayList<String> end, boolean autoAdd) throws SQLException {

        StringBuilder sql = new StringBuilder(CoreXmlSqlParsersFactory
                .getSql("TmsDemand.GetLine"));

        String startSql =    toSqlConditionString("M.START_NODE_CODE", Start);
        String endSql =    toSqlConditionString("M.END_NODE_CODE", end);

        sql.append(startSql);
        sql.append(endSql);

        ArrayList<String> Nodes = new ArrayList<String>();

        for (String A: Start
             ) {

            sql.append("  AND EXISTS (SELECT 1 FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE  AND  START_NODE_CODE = '")
                    .append(A).append("' )");

            if(!Nodes.contains(A)) Nodes.add(A);
        }

        for (String B: end
                ) {

            sql.append("  AND EXISTS (SELECT 1 FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE  AND  END_NODE_CODE = '")
                    .append(B).append("')");
            if(!Nodes.contains(B)) Nodes.add(B);
        }

        for (int i = 0; i < Nodes.size()-1 ; i++) {
            if(i==0){
                sql.append(" AND (SELECT MAX(SEGMENT_SQE) FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE AND START_NODE_CODE = '").append(Nodes.get(i)).append("') ").append("<=  (SELECT MAX(SEGMENT_SQE) FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE AND END_NODE_CODE = '").append(Nodes.get(i + 1)).append("') ");
            }else {
                sql.append(" AND (SELECT MAX(SEGMENT_SQE) FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE AND END_NODE_CODE = '"+ Nodes.get(i) +"') " +
                        "<=  (SELECT MAX(SEGMENT_SQE) FROM TMS_COM_LINE_C WHERE LINE_CODE = M.LINE_CODE AND END_NODE_CODE = '"+ Nodes.get(i+1) +"') ");
            }



        }

        sql.append(" ORDER BY M.LINE_CODE");


        PreparedStatement ps = con.prepareStatement(sql.toString());
        ResultSet rs = ps.executeQuery();
        List<TmsComLineMEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsComLineMEntity.class);
        rs.close();
        ps.close();


        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            if(autoAdd)
                return addLine(con,  Start,  end);
           else
               return null;

        } else {
            for (TmsComLineMEntity tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }


    public TmsComLineMEntity addLine(Connection con, ArrayList<String> Start, ArrayList<String> end) throws SQLException {
        if((Start==null || Start.size()<=0) && (end==null || end.size()<=0) ) return null;

      String ID =    GetLineNewID(con);

        ArrayList<String> Nodes = new ArrayList<String>();
        for (String s : Start) {
            if(!Nodes.contains(s)) Nodes.add(s);
        }
        for (String s : end) {
            if(!Nodes.contains(s)) Nodes.add(s);
        }

        String InsertSql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.InsertLineC");
        PreparedStatement patUpdate = con.prepareStatement(InsertSql);

        for (int i = 0; i <Nodes.size()-1 ; i++) {

            patUpdate.setObject(1,ID);
            patUpdate.setObject(2,ID);
            patUpdate.setObject(3,ID);
            patUpdate.setObject(4,Nodes.get(i));
            patUpdate.setObject(5,Nodes.get(i+1));
            patUpdate.addBatch();
        }
        patUpdate.executeBatch();


        String InsertSqlM = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.InsertLineM");
        PreparedStatement patInsertSqlM = con.prepareStatement(InsertSqlM);

        patInsertSqlM.setObject(1,ID);
        patInsertSqlM.addBatch();
        patInsertSqlM.executeBatch();



           return GetLine(con,Start,end,false);
    }


    public static String toSqlConditionString(String column, ArrayList<String> args) {
        StringBuffer str = new StringBuffer();
        if (args != null && args.size() > 0) {
            str.append(" AND ");
            str.append(column.toUpperCase());
            str.append(" IN(");
            for (String arg : args) {
                if (arg != null) {
                    str.append("'");
                    str.append(arg);
                    str.append("',");
                }
            }
            str.deleteCharAt(str.lastIndexOf(","));
            str.append(")");
        }
        return str.toString();
    }


    public  TmsComUnloadingEntity getNodeByPlineCode(Connection con,
                                      String plineCode) throws SQLException {
        String sql = CoreXmlSqlParsersFactory
                .getSql("TmsDemand.queryUnloading");
        PreparedStatement ps = con.prepareStatement(sql);
        ps.setObject(1,plineCode);
        ResultSet rs = ps.executeQuery();
        List<TmsComUnloadingEntity> tmsDemandMS = EntityTool.getEntitysByRs(rs,
                TmsComUnloadingEntity.class);
        rs.close();
        ps.close();
        if (tmsDemandMS == null || tmsDemandMS.size() == 0) {
            return null;
        } else {
            for (TmsComUnloadingEntity tmsDemandM : tmsDemandMS) {
                QualityDesignTool.nullConverNullString(tmsDemandM);
            }
            return tmsDemandMS.get(0);
        }
    }

    //  TZH 24.4.24 注销物流接口
//    public CoreReturnObject OneKeyUpdate(ArrayList<String> Demands, String UseName) throws SQLException {
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//        Connection connection2 = this.getDao(CoreConstantData.sysbeanstr)
//                .getConnection();
//        PreparedStatement psta = null;
//
//        SimpleDateFormat dateFormat = new SimpleDateFormat(
//                "yyyy-MM-dd HH:mm", Locale.CHINA);
//
//        StringBuilder Msg =  new StringBuilder();
//
//
//
//        Msg.append("一键调整" + Demands.size()  + "条需求");
//
//
//            int ErrorCount = 0;
//            StringBuilder ErrorMsg = new StringBuilder();
//
//            int SuccessCount= 0;
//        StringBuilder SuccessMsg = new StringBuilder();
//
//
//
//

//        for (String demand : Demands) {
//            try {
//
//                TmsDemandM tmsDemandM = getTmsDemandByKey(connection, demand);
//                if(tmsDemandM==null) throw new Exception("找不到需求信息");
//
//                if("TL".equals(tmsDemandM.getTranClassCode())){
//
//                    int LoadQty = 0;   //已上料数据
//                    double LoadWt = 0d;
//
//                    String sql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.doQueryLoad");
//                    PreparedStatement ps = connection2.prepareStatement(sql);
//                    ps.setObject(1, tmsDemandM.getCurrentJobNo());
//                    ps.setObject(2,tmsDemandM.getCurrentJobNo());
//                    ResultSet rs = ps.executeQuery();
//
//                    if(rs.next()){
//                        LoadQty = rs.getInt("ACT_COUNT");
//                        LoadWt = rs.getDouble("ACT_WEIGHT");
//                    }
//
//                    rs.close();
//                    ps.close();
//
//
//                    int unLoadQty = 0;  //已到投料库  未上料
//                    double unLoadWt = 0d;
//
//                     sql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.doQueryUnLoad");
//                     ps = connection2.prepareStatement(sql);
//                    ps.setObject(1, tmsDemandM.getEndAreaCode() );
//                    ps.setObject(2,tmsDemandM.getCurrentJobNo());
//                    ps.setObject(3, tmsDemandM.getEndAreaCode() );
//                    ps.setObject(4,tmsDemandM.getCurrentJobNo());
//                     rs = ps.executeQuery();
//
//                    if(rs.next()){
//                        unLoadQty = rs.getInt("ACT_COUNT");
//                        unLoadWt = rs.getDouble("ACT_WEIGHT");
//                    }
//
//                    rs.close();
//                    ps.close();
//
//
//
//
//                    int unTransportQty = 0;  //已下线  不在投料库  也不在上工序产出库
//                    double unTransportWt = 0d;
//                    String storageNo = "";   // 找任意未运输一库存点
//                    String judgeStove ="";
//
//                    sql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.doQueryNeedTransport");
//                    ps = connection2.prepareStatement(sql);
//                    ps.setObject(1, tmsDemandM.getEndAreaCode() );
//                    ps.setObject(2,tmsDemandM.getCurrentJobNo());
//                    ps.setObject(3, tmsDemandM.getEndAreaCode() );
//                    ps.setObject(4,tmsDemandM.getCurrentJobNo());
//                    rs = ps.executeQuery();
//
//                    if(rs.next()){
//                        unTransportQty = rs.getInt("ACT_COUNT");
//                        unTransportWt = rs.getDouble("ACT_WEIGHT");
//                        storageNo = rs.getString("STORAGE_NO");
//                    //    judgeStove = rs.getString("JUDGE_STOVE_NO");
//                    }
//
//                    rs.close();
//                    ps.close();
//
//
//                    String validflag = tmsDemandM.getValidflag();
//                    String realQty = "0";
//                    String realWt = "0";
//                    String nodes = tmsDemandM.getStartNodeCode();
//                    String nodesdesc = tmsDemandM.getStartAreaDesc();
//                    String areaCode = tmsDemandM.getStartAreaCode();
//                    String areaDesc = tmsDemandM.getStartAreaDesc();
//
//                    // 已运输
//                    if(LoadQty + unLoadQty >0){
//
//                        if(unTransportQty>0){   // 有待运输
//                            validflag =  StringUtil.isEmpty(tmsDemandM.getPlanQtyVal() ) ||  Integer.parseInt(tmsDemandM.getPlanQtyVal())<=0? "20": "30";
//                            realQty = unTransportQty +"";
//                            realWt = unTransportWt +"";
//
//                            validflag =  StringUtil.isEmpty(tmsDemandM.getPlanQtyVal() ) ||  Integer.parseInt(tmsDemandM.getPlanQtyVal())<=0? "20": "30";
//                            TmsComUnloadingEntity tmsComUnloadingEntity =  getNodeByPlineCode(connection,storageNo);
//                            nodes =tmsComUnloadingEntity.getUnloadingCode();
//                            nodesdesc =tmsComUnloadingEntity.getUnloadingDesc();
//                            areaCode = tmsComUnloadingEntity.getUnloadingAreaCode();
//                            areaDesc = tmsComUnloadingEntity.getUnloadingAreaDesc();
//
//                        }else {
//                            validflag = "50";
//                        }
//
//
//
//                    }else {
//                        validflag =  StringUtil.isEmpty(tmsDemandM.getPlanQtyVal() ) ||  Integer.parseInt(tmsDemandM.getPlanQtyVal())<=0? "20": "30";
//
//                        if(unTransportQty>0){   // 有待运输
//                            realQty = unTransportQty +"";
//                            realWt = unTransportWt +"";
//
//                            validflag =  StringUtil.isEmpty(tmsDemandM.getPlanQtyVal() ) ||  Integer.parseInt(tmsDemandM.getPlanQtyVal())<=0? "20": "30";
//                            TmsComUnloadingEntity tmsComUnloadingEntity =  getNodeByPlineCode(connection,storageNo);
//                            nodes =tmsComUnloadingEntity.getUnloadingCode();
//                            nodesdesc =tmsComUnloadingEntity.getUnloadingDesc();
//                            areaCode = tmsComUnloadingEntity.getUnloadingAreaCode();
//                            areaDesc = tmsComUnloadingEntity.getUnloadingAreaDesc();
//
//                        }
//
//                    }
//
//
//
//
//
//
//                    String UpdateSql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.updateDemandStatus");
//                    PreparedStatement patUpdate = connection.prepareStatement(UpdateSql);
//                    patUpdate.setObject(1,validflag);
//                    patUpdate.setObject(2,realQty);
//                    patUpdate.setObject(3,realWt);
//                    patUpdate.setObject(4,nodes);
//                    patUpdate.setObject(5,nodesdesc);
//                    patUpdate.setObject(6,areaCode);
//                    patUpdate.setObject(7,areaDesc);
//                    patUpdate.setObject(8,tmsDemandM.getDemandNo());
//
//                    patUpdate.addBatch();
//                    patUpdate.executeBatch();
//                    patUpdate.close();
//
//                    SuccessCount++;
//                }else   if("XX".equals(tmsDemandM.getTranClassCode())){
//
//                    int LoadQty = 0;   //已下线数据
//                    double LoadWt = 0d;
//
//                    String sql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.doQueryOut");
//                    PreparedStatement ps = connection2.prepareStatement(sql);
//                    ps.setObject(1, tmsDemandM.getHeatNo());
//                    ps.setObject(2,tmsDemandM.getDemandOrgCode());
//                    ps.setObject(3, tmsDemandM.getHeatNo());
//                    ps.setObject(4,tmsDemandM.getDemandOrgCode());
//                    ResultSet rs = ps.executeQuery();
//
//                    if(rs.next()){
//                        LoadQty = rs.getInt("ACT_COUNT");
//                        LoadWt = rs.getDouble("ACT_WEIGHT");
//                    }
//
//                    rs.close();
//                    ps.close();
//
//
//                    int unLoadQty = 0;  //已下线  未倒运
//                    double unLoadWt = 0d;
//
//                    sql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.doQueryUnLoad");
//                    ps = connection2.prepareStatement(sql);
//                    ps.setObject(1, tmsDemandM.getStartNodeCode() );
//                    ps.setObject(2,tmsDemandM.getCurrentJobNo());
//                    ps.setObject(3, tmsDemandM.getStartNodeCode() );
//                    ps.setObject(4,tmsDemandM.getCurrentJobNo());
//                    rs = ps.executeQuery();
//
//                    if(rs.next()){
//                        unLoadQty = rs.getInt("ACT_COUNT");
//                        unLoadWt = rs.getDouble("ACT_WEIGHT");
//                    }
//
//                    rs.close();
//                    ps.close();
//
//
//                    String validflag = tmsDemandM.getValidflag();
//                    String realQty = "0";
//                    String realWt = "0";
//                    String nodes = tmsDemandM.getStartNodeCode();
//                    String nodesdesc = tmsDemandM.getStartAreaDesc();
//                    String areaCode = tmsDemandM.getStartAreaCode();
//                    String areaDesc = tmsDemandM.getStartAreaDesc();
//
//                    // 已运输
//                    if(LoadQty  >0  && unLoadQty<=0 ){
//                            validflag = "50";
//                    }
//
//
//                    String UpdateSql = CoreXmlSqlParsersFactory
//                            .getSql("TmsDemand.updateDemandStatus");
//                    PreparedStatement patUpdate = connection.prepareStatement(UpdateSql);
//                    patUpdate.setObject(1,validflag);
//                    patUpdate.setObject(2,realQty);
//                    patUpdate.setObject(3,realWt);
//                    patUpdate.setObject(4,nodes);
//                    patUpdate.setObject(5,nodesdesc);
//                    patUpdate.setObject(6,areaCode);
//                    patUpdate.setObject(7,areaDesc);
//                    patUpdate.setObject(8,tmsDemandM.getDemandNo());
//
//                    patUpdate.addBatch();
//                    patUpdate.executeBatch();
//                    patUpdate.close();
//
//                    SuccessCount++;
//                } else {
//                    throw new Exception("暂只支持调整投料需求");
//                }
//
//
//            }catch (Exception ex){
//                ErrorCount++;
//                ErrorMsg.append(demand).append(" ").append(ex.toString()).append("/r/n");
//            }
//        }
//
//        if(SuccessCount>0){
//            Msg.append(" /r/n  调整成功" +  SuccessCount + "条");
//            // Msg.append(" 失败详情:/r/n");
//            // Msg.append(ErrorMsg);
//        }
//
//        if(ErrorCount>0){
//            Msg.append(" /r/n  调整失败" +  ErrorCount + "条");
//            Msg.append(" 失败详情:/r/n");
//            Msg.append(ErrorMsg);
//        }
//
//
//            core.setV_errMsg("调整成功！" + "/r/n" + Msg);
//            core.setResult(1);
//
//
//        try {
//            if (connection != null && !connection.isClosed()) {
//                connection.close();
//            }
//        }
//        catch (Exception e2) {
//        }
//
//        try {
//            if (connection2 != null && !connection2.isClosed()) {
//                connection2.close();
//            }
//        }
//        catch (Exception e2) {
//        }
//
//        return core;
//    }
//
    

    public CoreReturnObject updateFlag(ArrayList<String> Demands, String UseName, String Flag){
        CoreReturnObject core = new CoreReturnObject();
        //  TZH 24.4.24 注销物流接口
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
        Connection con = this.getDao(CoreConstantData.sysbeanstr).getConnection();
        PreparedStatement psta = null;
        String selectSql = "";
        ResultSet rs = null;
        int aCount = 0;
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm", Locale.CHINA);

        try {
            //  TZH 24.4.24 注销物流接口
//            connection.setAutoCommit(false); //
            String sql = CoreXmlSqlParsersFactory
                    .getSql("TmsDemand.updateFlag");

            if(Demands.size()<=0){
                core.setV_errMsg("请选择需求！");
                return core;
            }
            //  TZH 24.4.24 注销物流接口
//            PreparedStatement patUpdate = connection.prepareStatement(sql);

            for (String demand : Demands) {
                TmsDemandM tmsDemandM =  EntityTool.getEntityByJSONStr(demand,TmsDemandM.class);
                //  TZH 24.4.24 注销物流接口
//                TmsDemandM temp = getTmsDemandByKey(connection, tmsDemandM.getDemandNo());

                if("0".equals(Flag)) {
                    //  TZH 24.4.24 注销物流接口
//                   if(temp.getPlanQtyVal() !=null && Integer.parseInt( temp.getPlanQtyVal()) >0){
//                       throw new Exception("已派计划的需求,不允许取消确认");
//                    }


                }

                if("1".equals(Flag)) {

                    //  TZH 24.4.24 注销物流接口
//                    if("40".equals(temp.getValidflag()) || "50".equals(temp.getValidflag()) ){
//                        throw new Exception("已结束或已关闭的需求无法确认！");
//                    }
                    if(tmsDemandM.getTranClassCode().equals("TL")||tmsDemandM.getTranClassCode().equals("DK"))
                    {
                        //判断管库存位置
                        if(tmsDemandM.getMatType().equals("1"))
                        {
                            selectSql = CoreXmlSqlParsersFactory.getSql("TmsDemand.selectMatBcCount");
                            selectSql = EntityTool.fillSqlByEntity(selectSql,tmsDemandM);
                            psta = con.prepareStatement(selectSql);
                            rs = psta.executeQuery();
                            if(rs.next())
                            {
                                aCount = Integer.parseInt(rs.getString("ACOUNT"));
                            }
                            rs.close();
                            psta.close();

                            if(aCount >0)
                            {
                                selectSql = CoreXmlSqlParsersFactory.getSql("TmsDemand.selectMatBc");
                                selectSql = EntityTool.fillSqlByEntity(selectSql,tmsDemandM);
                                psta = con.prepareStatement(selectSql);
                                rs = psta.executeQuery();
                                if(rs.next())
                                {
                                    aCount = Integer.parseInt(rs.getString("ACOUNT"));
                                }
                                rs.close();
                                psta.close();
                                if(aCount ==0)
                                {
                                    throw new Exception("请核实需求的装点是否与库存地点一致！");
                                }
                            }


                        }else if(tmsDemandM.getMatType().equals("2"))//判断坯子库存位置
                        {
                            selectSql = CoreXmlSqlParsersFactory.getSql("TmsDemand.selectMatGpCount");
                            selectSql = EntityTool.fillSqlByEntity(selectSql,tmsDemandM);
                            psta = con.prepareStatement(selectSql);
                            rs = psta.executeQuery();
                            if(rs.next())
                            {
                                aCount = Integer.parseInt(rs.getString("ACOUNT"));
                            }
                            rs.close();
                            psta.close();

                            if(aCount > 0)
                            {
                                selectSql = CoreXmlSqlParsersFactory.getSql("TmsDemand.selectMatGp");
                                selectSql = EntityTool.fillSqlByEntity(selectSql,tmsDemandM);
                                psta = con.prepareStatement(selectSql);
                                rs = psta.executeQuery();
                                if(rs.next())
                                {
                                    aCount = Integer.parseInt(rs.getString("ACOUNT"));
                                }
                                rs.close();
                                psta.close();
                                if(aCount ==0)
                                {
                                    throw new Exception("请核实需求的装点是否与库存地点一致！");
                                }
                            }

                        }
                    }



                }
                //  TZH 24.4.24 注销物流接口

//                patUpdate.setObject(1,tmsDemandM.getTransportStartTime());
//                patUpdate.setObject(2,tmsDemandM.getTransportEndTime());
//                patUpdate.setObject(3,tmsDemandM.getStartNodeCode());
//                patUpdate.setObject(4,tmsDemandM.getStartNodeDesc());
//                patUpdate.setObject(5,tmsDemandM.getStartAreaCode());
//                patUpdate.setObject(6,tmsDemandM.getStartAreaDesc());
//                patUpdate.setObject(7,tmsDemandM.getEndNodeCode());
//                patUpdate.setObject(8,tmsDemandM.getEndNodeDesc());
//                patUpdate.setObject(9,tmsDemandM.getEndAreaCode());
//                patUpdate.setObject(10,tmsDemandM.getEndAreaDesc());
//                patUpdate.setObject(11,tmsDemandM.getMemo());
//                patUpdate.setObject(12,Flag);
//                patUpdate.setObject(13,UseName);
//                patUpdate.setObject(14,tmsDemandM.getDemandNo());
//                patUpdate.addBatch();

            }

            //  TZH 24.4.24 注销物流接口
//            patUpdate.executeBatch();

            core.setV_errMsg("操作成功！");
            core.setResult(1);
            //  TZH 24.4.24 注销物流接口
//            connection.commit();
        }
        catch (Exception e) {
            core.setV_errMsg(e.getMessage());
            //  TZH 24.4.24 注销物流接口
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
        }
        finally {
            try {
            	
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
            }
            catch (Exception e2) {
            }
        }
        return core;
    }


    //  TZH 24.4.24 注销物流接口
//    public CoreReturnObject updatePln(ArrayList<String> Plns, String UseName, String EndCode){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//
//        try {
//            connection.setAutoCommit(false); //
//
//
//            if(Plns.size()<=0){
//                core.setV_errMsg("请选择需要调整的计划！");
//                return core;
//            }
//
//            for (String plnNo : Plns) {
//
//
//                TmsPlnMEntity tmsPlnMEntity = getPlnByKey(connection,plnNo);
//
//              if(tmsPlnMEntity==null || "00".equals(tmsPlnMEntity.getValidflag()))  throw  new Exception("找不到计划! 建议刷新数据!");
//
//
//                if (tmsPlnMEntity.getValidflag().equals("40") || tmsPlnMEntity.getValidflag().equals("50"))   throw  new Exception( "已结算的计划不允许操作调整卸货点! ");
//
//
//
//                String sql = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.updatePln");
//                PreparedStatement patUpdate = connection.prepareStatement(sql);
//
//                //取各需求的起点终点去重  查找所经过这些点的路线
//                ArrayList<String> StartNodes = new ArrayList<String>();
//                ArrayList<String> EndNodes = new ArrayList<String>();
//
//                StartNodes.add(tmsPlnMEntity.getStartNodeCode());
//                EndNodes.add(EndCode);
//
//
//                TmsComLineMEntity line = GetLine(connection, StartNodes, EndNodes,true);
//                if (line == null || line.getStartNodeCode() == null || line.getEndNodeCode() == null)
//                    throw new Exception("未找到该起点终点的路线,请先维护路线");
//
//                patUpdate.setObject(1,line.getEndNodeCode());
//                patUpdate.setObject(2,line.getEndNodeDesc());
//
//                patUpdate.setObject(3,line.getEndAreaCode());
//                patUpdate.setObject(4,line.getEndAreaDesc());
//                patUpdate.setObject(5,line.getLineCode());
//                patUpdate.setObject(6,line.getLineDesc());
//                patUpdate.setObject(7,UseName);
//                patUpdate.setObject(8,plnNo);
//                patUpdate.addBatch();
//                patUpdate.executeBatch();
//                patUpdate.close();
//
//
//                String sql2 = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.updatePlnC");
//                PreparedStatement patUpdate2 = connection.prepareStatement(sql2);
//                patUpdate2.setObject(1,line.getEndNodeCode());
//                patUpdate2.setObject(2,line.getEndNodeDesc());
//                patUpdate2.setObject(3,line.getEndAreaCode());
//                patUpdate2.setObject(4,line.getEndAreaDesc());
//                patUpdate2.setObject(5,plnNo);
//                patUpdate2.addBatch();
//                patUpdate2.executeBatch();
//                patUpdate2.close();
//
//               List<TmsWaybillMEntity> list =   getWaybillByKey(connection,plnNo);
//               if(list!=null && list.size()>0){
//                   for (TmsWaybillMEntity tmsWaybillMEntity : list) {
//                       if(tmsWaybillMEntity.getValidflag().equals("50"))    throw new Exception("运单已扫码到达,请撤销到达卸点！");
//                       if(tmsWaybillMEntity.getValidflag().equals("60") || tmsWaybillMEntity.getValidflag().equals("70"))  throw new Exception("计划下的存在已完成的运单,不支持该操作！");
//
//
//                       String updateWaybill = CoreXmlSqlParsersFactory
//                               .getSql("TmsDemand.updateWaybill");
//                       PreparedStatement patUpdateWaybill = connection.prepareStatement(updateWaybill);
//
//                       patUpdateWaybill.setObject(1,line.getLineCode());
//                       patUpdateWaybill.setObject(2,line.getLineDesc());
//                       patUpdateWaybill.setObject(3,UseName);
//                       patUpdateWaybill.setObject(4,tmsWaybillMEntity.getWaybillNo());
//                       patUpdateWaybill.addBatch();
//                       patUpdateWaybill.executeBatch();
//                       patUpdateWaybill.close();
//
//                       String sql3 = CoreXmlSqlParsersFactory
//                               .getSql("TmsDemand.updateWaybillC");
//                       PreparedStatement patUpdate3 = connection.prepareStatement(sql3);
//                       patUpdate3.setObject(1,line.getEndNodeCode());
//                       patUpdate3.setObject(2,line.getEndNodeDesc());
//                       patUpdate3.setObject(3,line.getEndAreaCode());
//                       patUpdate3.setObject(4,line.getEndAreaDesc());
//                       patUpdate3.setObject(5,tmsWaybillMEntity.getWaybillNo());
//                       patUpdate3.addBatch();
//                       patUpdate3.executeBatch();
//                       patUpdate3.close();
//
//
//                   }
//
//
//               }
//
//            }
//
//
//
//            core.setV_errMsg("调整成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }
//
    
    //  TZH 24.4.24 注销物流接口
//    public CoreReturnObject splitDemand(String Demand, Integer splitNum,  String UseName){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//
//        try {
//            connection.setAutoCommit(false); //
//
//            if(StringUtil.isEmpty(Demand)) throw new Exception("找不到需求!");
//
//            TmsDemandM tmsDemandM = getTmsDemandByKey(connection,Demand);
//
//            if(tmsDemandM==null ||  "00".equals(tmsDemandM.getValidflag())) throw new Exception("找不到需求!");
//
//            if("40".equals(tmsDemandM.getValidflag())) throw new Exception("需求已经结束!");
//            if("50".equals(tmsDemandM.getValidflag())) throw new Exception("需求已经关闭!");
//
//
//
//            BigDecimal demandQty = new BigDecimal(tmsDemandM.getDemandQtyVal());
//            BigDecimal demandWt = new BigDecimal(tmsDemandM.getDemandWtVal());
//
//            BigDecimal unplnQty = new BigDecimal(tmsDemandM.getUnPlanQtyVal());
//
//            if(splitNum==null || splitNum<=0){
//                throw new Exception("请输入正确的拆分支数!");
//            }
//
//            if(splitNum>unplnQty.intValue()){
//                throw new Exception("拆分支数已超过待派支数!");
//            }
//
//            if(splitNum>=demandQty.intValue()){
//                throw new Exception("拆分支数必须小于需求支数!");
//            }
//
//            BigDecimal splitWt = demandWt.multiply(new BigDecimal(splitNum)).divide(demandQty,3,BigDecimal.ROUND_HALF_EVEN);
//
//
//            String updateDemandQty = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.updateDemandQty");
//            PreparedStatement patUpdateDemandQty = connection.prepareStatement(updateDemandQty);
//
//            patUpdateDemandQty.setObject(1,demandQty.subtract(new BigDecimal(splitNum)).intValue());
//            patUpdateDemandQty.setObject(2,demandWt.subtract(splitWt).doubleValue());
//            patUpdateDemandQty.setObject(3,Demand);
//            patUpdateDemandQty.addBatch();
//            patUpdateDemandQty.executeBatch();
//            patUpdateDemandQty.close();
//
//
//            String insertCopy = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.insertCopy");
//            PreparedStatement patInsertCopy = connection.prepareStatement(insertCopy);
//
//            patInsertCopy.setObject(1,splitNum);
//            patInsertCopy.setObject(2,splitWt.doubleValue());
//            patInsertCopy.setObject(3,UseName);
//            patInsertCopy.setObject(4,Demand);
//            patInsertCopy.addBatch();
//            patInsertCopy.executeBatch();
//            patInsertCopy.close();
//
//
//
//            core.setV_errMsg("拆分成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }
//
    //  TZH 24.4.24 注销物流接口
//    public CoreReturnObject mergeDemand(ArrayList<String> demands ,String TrdemandNo){
//        CoreReturnObject core = new CoreReturnObject();
//        Connection connection = this.getDao("TmsDao")
//                .getConnection();
//
//        try {
//            connection.setAutoCommit(false); //
//
//            if(StringUtil.isEmpty(TrdemandNo)) throw new Exception("找不到需求!");
//
//            TmsDemandM TrdemandNoEntity = getTmsDemandByKey(connection,TrdemandNo);
//
//            if(TrdemandNoEntity==null) throw new Exception("找不到需求!");
//
//            BigDecimal totalNum = StringUtil.isEmpty(TrdemandNoEntity.getDemandQtyVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getDemandQtyVal());
//            BigDecimal totalWt = StringUtil.isEmpty(TrdemandNoEntity.getDemandWtVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getDemandWtVal());
//            BigDecimal outputNum = StringUtil.isEmpty(TrdemandNoEntity.getOutputQtyVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getOutputQtyVal());
//            BigDecimal outputWt =StringUtil.isEmpty(TrdemandNoEntity.getOutputWtVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getOutputWtVal());
//            BigDecimal offlineNum = StringUtil.isEmpty(TrdemandNoEntity.getOfflineQtyVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getOfflineQtyVal());
//            BigDecimal offlineWt =StringUtil.isEmpty(TrdemandNoEntity.getOfflineWtVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getOfflineWtVal());
//            BigDecimal scrapNum = StringUtil.isEmpty(TrdemandNoEntity.getScrapQtyVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getScrapQtyVal());
//            BigDecimal scrapWt = StringUtil.isEmpty(TrdemandNoEntity.getScrapWtVal())?BigDecimal.ZERO:new BigDecimal(TrdemandNoEntity.getScrapWtVal());
//
//
//
//
//            for ( String demandno :demands
//                 ) {
//                 if(demandno.equals(TrdemandNo)) continue;
//
//
//                TmsDemandM temp = getTmsDemandByKey(connection,demandno);
//                if(temp==null) throw new Exception("找不到需求!");
//
//                if(temp.getHeatNo()==null && TrdemandNoEntity.getHeatNo()!=null){
//                    throw new Exception("炉号不一致,不允许合并!");
//                }
//
//                if(temp.getHeatNo()!=null && TrdemandNoEntity.getHeatNo()==null){
//                    throw new Exception("炉号不一致,不允许合并!");
//                }
//
//                  if(temp.getHeatNo()!=null &&  TrdemandNoEntity.getHeatNo()!=null
//                          && !temp.getHeatNo().equals(TrdemandNoEntity.getHeatNo())){
//                    throw new Exception("炉号不一致,不允许合并!");
//                }
//
//
//                if(temp.getBatchNo()==null && TrdemandNoEntity.getBatchNo()!=null){
//                    throw new Exception("批号不一致,不允许合并!");
//                }
//
//                if(temp.getBatchNo()!=null && TrdemandNoEntity.getBatchNo()==null){
//                    throw new Exception("批号不一致,不允许合并!");
//                }
//
//                if(temp.getBatchNo()!=null &&  TrdemandNoEntity.getBatchNo()!=null
//                        && !temp.getBatchNo().equals(TrdemandNoEntity.getBatchNo())){
//                    throw new Exception("批号不一致,不允许合并!");
//                }
//
//                if(temp.getLogoNo()==null && TrdemandNoEntity.getLogoNo()!=null){
//                    throw new Exception("标识炉号不一致,不允许合并!");
//                }
//
//                if(temp.getLogoNo()!=null && TrdemandNoEntity.getLogoNo()==null){
//                    throw new Exception("标识炉号不一致,不允许合并!");
//                }
//
//                if(temp.getLogoNo()!=null &&  TrdemandNoEntity.getLogoNo()!=null
//                        && !temp.getLogoNo().equals(TrdemandNoEntity.getLogoNo())){
//                    throw new Exception("标识炉号不一致,不允许合并!");
//                }
//
//
//                totalNum = totalNum.add(StringUtil.isEmpty(temp.getDemandQtyVal())?BigDecimal.ZERO:new BigDecimal(temp.getDemandQtyVal()));
//                totalWt = totalWt.add(StringUtil.isEmpty(temp.getDemandWtVal())?BigDecimal.ZERO:new BigDecimal(temp.getDemandWtVal()));
//                outputNum = totalNum.add(StringUtil.isEmpty(temp.getOutputQtyVal())?BigDecimal.ZERO:new BigDecimal(temp.getOutputQtyVal()));
//                outputWt = totalNum.add(StringUtil.isEmpty(temp.getOutputWtVal())?BigDecimal.ZERO:new BigDecimal(temp.getOutputWtVal()));
//                offlineNum = totalNum.add(StringUtil.isEmpty(temp.getOfflineQtyVal())?BigDecimal.ZERO:new BigDecimal(temp.getOfflineQtyVal()));
//                offlineWt = totalNum.add(StringUtil.isEmpty(temp.getOfflineWtVal())?BigDecimal.ZERO:new BigDecimal(temp.getOfflineWtVal()));
//                scrapNum = totalNum.add(StringUtil.isEmpty(temp.getScrapQtyVal())?BigDecimal.ZERO:new BigDecimal(temp.getScrapQtyVal()));
//                scrapWt = totalNum.add(StringUtil.isEmpty(temp.getScrapWtVal())?BigDecimal.ZERO:new BigDecimal(temp.getScrapWtVal()));
//
//
//                String delete = CoreXmlSqlParsersFactory
//                        .getSql("TmsDemand.deleteDemand");
//                PreparedStatement patDelete = connection.prepareStatement(delete);
//                patDelete.setObject(1,temp.getDemandNo());
//                patDelete.addBatch();
//                patDelete.executeBatch();
//                patDelete.close();
//            }
//
//
//            String updateDemandQty = CoreXmlSqlParsersFactory
//                    .getSql("TmsDemand.updateDemandQty2");
//            PreparedStatement patUpdateDemandQty = connection.prepareStatement(updateDemandQty);
//
//            patUpdateDemandQty.setObject(1,totalNum);
//            patUpdateDemandQty.setObject(2,totalWt);
//            patUpdateDemandQty.setObject(3,outputNum);
//            patUpdateDemandQty.setObject(4,outputWt);
//            patUpdateDemandQty.setObject(5,offlineNum);
//            patUpdateDemandQty.setObject(6,offlineWt);
//            patUpdateDemandQty.setObject(7,scrapNum);
//            patUpdateDemandQty.setObject(8,scrapWt);
//            patUpdateDemandQty.setObject(9,TrdemandNo);
//            patUpdateDemandQty.addBatch();
//            patUpdateDemandQty.executeBatch();
//            patUpdateDemandQty.close();
//
//
//
//            core.setV_errMsg("合并成功！");
//            core.setResult(1);
//            connection.commit();
//        }
//        catch (Exception e) {
//            core.setV_errMsg(e.getMessage());
//            if (connection != null) {
//                try {
//                    connection.rollback(); // 回滚事务
//                }
//                catch (Exception e2) {
//                }
//            }
//        }
//        finally {
//            try {
//                if (connection != null && !connection.isClosed()) {
//                    connection.close();
//                }
//            }
//            catch (Exception e2) {
//            }
//        }
//        return core;
//    }
}
