package weaver.interfaces.htxc.tycgsq.action;

import com.alibaba.fastjson.JSONObject;
import com.weaver.general.BaseBean;

import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.Util;
import weaver.interfaces.htsc.comInfo.PropBean;
import weaver.interfaces.htsc.itcglc.action.ItcglcCreateCgrwdAction;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

/**
 * @Title: ecology-9
 * @Company: 泛微软件
 * @author: K1810027
 * @version: 1.0
 * @CreateDate: 2022-08-30 10:26
 * @Description:这个action是用来通用采购申请办结创建采购任务，并触发采购任务单流程
 * @ModifyLog:
 **/
public class EndingTriggderFellow extends BaseBean implements Action {
    @Override
    public String execute(RequestInfo requestInfo) {
        //请求ID
        String requestId = requestInfo.getRequestid();
        //表单ID
        int formid = requestInfo.getRequestManager().getFormid();
        //表单名称
        String tableName = requestInfo.getRequestManager().getBillTableName();
//        String requestId= "5888896";
//        String tableName = "formtable_main_493";
//        int formid = -493;
        RecordSet rs = new RecordSet();
        RecordSet rs1 = new RecordSet();
        RecordSet rs2 = new RecordSet();
        RecordSet updateRs = new RecordSet();
        RecordSet insertRs = new RecordSet();
        PropBean pb = new PropBean();
        //采购项的modeid
        String cgsqModeId = pb.getPropName("cgsq_modeid");
        LocalDate now = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        String format = now.format(formatter);
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String format1 = now.format(formatter1);
        LocalTime time = LocalTime.now();
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        String sql = "select id,ngr,szbm,lxly from "+tableName+" where requestid = "+requestId;
        rs.execute(sql);
        if(rs.next()){
//            String lxxm = rs.getString("lxxm");
            String id = rs.getString("id");
            String ngr = rs.getString("ngr");
            String szbm = rs.getString("szbm");
            //立项来源
            String lxly = rs.getString("lxly");
            //项目编号
            String xmbh = rs.getString("xmbh");
            //项目名称oa
            String xmmcoa = rs.getString("xmmcoa");
//            String dt4Sql = "select * from "+tableName+"_dt5 where mainid = "+id;
//            rs.execute(dt4Sql);
//            ArrayList<List> param = new ArrayList<>();
//            while(rs.next()){
//                //随机取6位数字
//                ArrayList<String> list = new ArrayList<>();
//                list.add(requestId);
//                if(Objects.equals("0",lxly)){
//                    String lxSql ="select * from uf_cgxmgl where xmbh = ?";
//                    rs2.executeQuery(lxSql,xmbh);
//                    ArrayList<String> ids = new ArrayList<>();
//                    while(rs2.next()){
//                        ids.add(rs2.getString("id"));
//                    }
//                    String join = StringUtils.join(ids, ",");
//                    list.add(join);
//                    list.add(join);
//                }else{
//                    list.add(xmmcoa);
//                    list.add(xmmcoa);
//                }
////                list.add(lxxm);
//                String dt4Id = Util.null2String(rs.getString("id"));
////                list.add(dt4Id);
//                String sqxm = Util.null2String(rs.getString("sqxm"));
//                list.add(sqxm);
////                list.add(lxxm);
//                String xmmc = Util.null2String(rs.getString("xmmc"));
//                list.add(xmmc);
//                String lxlx = Util.null2String(rs.getString("lxlx"));
//                list.add(lxlx);
//                String cglx = Util.null2String(rs.getString("cglx"));
//                list.add(cglx);
//                if(Objects.equals("0",lxly)){
//                    String cgdbh = Util.null2String(rs.getString("cgdbh"));
//                    list.add(cgdbh);
//                }else{
//                    String cgfsSql ="select * from workflow_selectitem where fieldid = (select id from workflow_billfield where billid = ? and fieldname = 'cgfs' ) and selectvalue = ?";
//                    rs1.executeQuery(cgfsSql,formid,Util.null2String(rs.getString("cgfs")));
//                    rs1.next();
//                    String cgdbh = Util.null2String(rs1.getString("selectname"))+format+generateRandomArray(6);
//                    list.add(cgdbh);
//                }
//                String xmlx = Util.null2String(rs.getString("xmlx"));
//                list.add(xmlx);
//                String xmkfxs = Util.null2String(rs.getString("xmkfxs"));
//                list.add(xmkfxs);
//                String cgfs = Util.null2String(rs.getString("cgfs"));
//                list.add(cgfs);
//                String gys = Util.null2String(rs.getString("gys"));
//                list.add(gys);
//                String cgnr = Util.null2String(rs.getString("cgnr"));
//                list.add(cgnr);
//                list.add(szbm);
//                list.add(ngr);
//                String cgfzr = Util.null2String(rs.getString("cgfzr"));
//                list.add(cgfzr);
//                String xmzmd = Util.null2String(rs.getString("xmzmd"));
//                list.add(xmzmd);
//                String xmdyxt = Util.null2String(rs.getString("xmdyxt"));
//                list.add(xmdyxt);
//                //单位是万元
//                String ysje = Util.null2String(rs.getString("ysje"));
//                list.add(ysje);
//                String ysbm = Util.null2String(rs.getString("ysbm"));
//                list.add(ysbm);
//                String ysssnf = Util.null2String(rs.getString("ysssnf"));
//                list.add(ysssnf);
//                String cgsl = Util.null2String(rs.getString("cgsl"));
//                list.add(cgsl);
//                String bz = Util.null2String(rs.getString("bz"));
//                list.add(bz);
//                String xmjsnr = Util.null2String(rs.getString("xmjsnr"));
//                list.add(xmjsnr);
//                String fj = Util.null2String(rs.getString("fj"));
//                list.add(fj);
//                String ysfyzclb = Util.null2String(rs.getString("ysfyzclb"));
//                list.add(ysfyzclb);
//                String cgzd1 = Util.null2String(rs.getString("cgzd"));
//                list.add(cgzd1);
//                String cgtk1 = Util.null2String(rs.getString("cgtk"));
//                list.add(cgtk1);
//                list.add("1");
//                list.add(format1);
//                list.add("0");
//                list.add(cgsqModeId);
//                list.add(ngr);
//                list.add(format1);
//                list.add(time.format(timeFormatter));
//                list.add("0");
//                list.add(dt4Id);
//                String sstd = Util.null2String(rs.getString("sstd"));
//                list.add(sstd);
//                String sszx = Util.null2String(rs.getString("sszx"));
//                list.add(sszx);
//                param.add(list);
//            }
//            //创建采购项
//            String insertSql = "insert into uf_cgxq (gllc,cglxxmid,cgxmlx,sqxm,xmmc,xmlx1,xmlb,xmbh,xmlx,xmkfxs,cgfs,gys,cgnr," +
//                    "xmjlbm,cjr,xmfzr,xmzmd,xmdyxt,ysje,ysssbm,ysssnf,cgsl,bz,xmjsnr,fj,ysfyzclb,cgzd1,cgtk1,zt,cjrq,ly,formmodeid,modedatacreater," +
//                    "modedatacreatedate,modedatacreatetime,modedatacreatertype,mxbid,sstd,sszx) values (?,?,?,?,?,?," +
//                    "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//            insertRs.executeBatchSql(insertSql,param);
//            //权限重构
//            ModeRightInfo modeRightInfo = new ModeRightInfo();
//            String rwmodeid = pb.getPropName("cgxm_modeuuid");
//            JSONObject jsonObject_rw = pb.getModeInfoByUUID(rwmodeid);
//            int modeid = Util.getIntValue(jsonObject_rw.getString("modeid"));
//            modeRightInfo.editModeDataShare(1,modeid,Integer.parseInt(id));
////            System.out.println("结束");
//
//            //方向插入建模id和采购单编号
//            String cgxqSql = "select * from uf_cgxq where gllc = ?";
//            ArrayList<String> strings = new ArrayList<>();
//            strings.add(requestId);
//            rs1.executeQuery(cgxqSql,strings);
//            while(rs1.next()){
//                String updateSql = "update "+tableName+"_dt5 set jmid = ? , cgdbh = ? , xmid=?  where id = ?";
//                updateRs.executeUpdate(updateSql,rs1.getString("id"),rs1.getString("xmbh"), rs1.getString("mxbid"), rs1.getString("mxbid"));
//            }
            //触发流程
            if(Objects.equals("0",lxly)){
//                ItcglcCreateCgrwdAction itcglcCreateCgrwdAction = new ItcglcCreateCgrwdAction();
//                itcglcCreateCgrwdAction.execute(requestInfo);
                ItcgTriggerCgrwd tri = new ItcgTriggerCgrwd();
                tri.triggerFellow(requestInfo);
            }else{
                TycgsqEndingTriggerWorkflow tycgsqEndingTriggerWorkflow = new TycgsqEndingTriggerWorkflow();
                tycgsqEndingTriggerWorkflow.execute(requestInfo);
            }

        }
//        System.out.println("结束============================");
        return Action.SUCCESS;
    }



    public  String generateRandomArray(int num) {
        String chars = "0123456789";

        char[] rands = new char[num];

        for (int i = 0; i < num; i++) {
            int rand = (int) (Math.random() * 10);

            rands[i] = chars.charAt(rand);

        }

        return new String(rands);

    }
}
