package com.app.crontask.reportCron;


import com.app.crontask.ChangeTimeUtils;
import org.python.antlr.ast.Continue;
import psdi.mbo.MboRemote;
import psdi.mbo.MboSetRemote;
import psdi.server.MXServer;
import psdi.server.SimpleCronTask;
import psdi.util.MXException;

import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.Year;
import java.time.YearMonth;
import java.util.Date;

/**
 * 报表设备类 定时任务类
 * 每月执行一次
 * edit 2023-11-23
 */
public class MTBFCronTask extends SimpleCronTask {

    @Override
    public void cronAction() {
        try {
            //设备指标定时任务表
            MboSetRemote udbtaskSet = MXServer.getMXServer().getMboSet("UDBTASK", MXServer.getMXServer().getSystemUserInfo());
            MboSetRemote wo2Set = MXServer.getMXServer().getMboSet("UDWORKORDER", MXServer.getMXServer().getSystemUserInfo());
            //报表统计组织结构配置表
            MboSetRemote udosbcfgidSet = MXServer.getMXServer().getMboSet("UDOSBCFG", MXServer.getMXServer().getSystemUserInfo());
            //设备类
            MboSetRemote udplcfgSet = MXServer.getMXServer().getMboSet("PLUSCTEMPLATE", MXServer.getMXServer().getSystemUserInfo());
            //产线
            MboSetRemote udcxfgSet = MXServer.getMXServer().getMboSet("UDOSBCFG", MXServer.getMXServer().getSystemUserInfo());
            //设备稼动率 产线级
            MboSetRemote udsbjdlcxSet = MXServer.getMXServer().getMboSet("UDOSBCFG", MXServer.getMXServer().getSystemUserInfo());
            //车间
            MboSetRemote uddeptSet = MXServer.getMXServer().getMboSet("DEPT", MXServer.getMXServer().getSystemUserInfo());
            //时间配置表 停机时长
            MboSetRemote udruntimeSet = MXServer.getMXServer().getMboSet("UDRUNTIMECFG", MXServer.getMXServer().getSystemUserInfo());
            //产能配置表 产能
            MboSetRemote udcapcfgSet = MXServer.getMXServer().getMboSet("UDCAPCFG", MXServer.getMXServer().getSystemUserInfo());
            //领料申请单 用于计算单位维修费统计
            MboSetRemote udlldSet = MXServer.getMXServer().getMboSet("UDLLD", MXServer.getMXServer().getSystemUserInfo());
            //人员标准工时配置表 用于计算人员利用率
            MboSetRemote udstaskSet = MXServer.getMXServer().getMboSet("UDSTASK", MXServer.getMXServer().getSystemUserInfo());
            //工单实际工时 用于计算人员利用率
            MboSetRemote udplmawtSet = MXServer.getMXServer().getMboSet("UDPLMAWT", MXServer.getMXServer().getSystemUserInfo());
            //点检保养任务表 用于计算人员利用率
            MboSetRemote spotrunSet = MXServer.getMXServer().getMboSet("SPOTRUN", MXServer.getMXServer().getSystemUserInfo());
            //人员利用率 报表维修人员配置表
            MboSetRemote udwxryconfSet = MXServer.getMXServer().getMboSet("UDWXRYCONF", MXServer.getMXServer().getSystemUserInfo());
            //人员利用率 报表维修人员配置表
            MboSetRemote udwxryconf2Set = MXServer.getMXServer().getMboSet("UDWXRYCONF", MXServer.getMXServer().getSystemUserInfo());

            //工厂级单位维修费报表配置表
            MboSetRemote udzwxfconfSet = MXServer.getMXServer().getMboSet("UDZWXFCONF", MXServer.getMXServer().getSystemUserInfo());

            // 获取当前日期
            LocalDate currentDate = LocalDate.now();
            Date curdate=new Date();
            // 获取当前年份
            int currentYear = Year.now().getValue();
            // 获取当前年月
            YearMonth currentYearMonth = YearMonth.from(currentDate);
            // 获取当前月份
            int currentMonth = currentYearMonth.getMonthValue();
            //当前月份的天数
            int daysInMonth = currentYearMonth.lengthOfMonth();


//            String sysdate="to_date('2024-02-29', 'yyyy-MM-dd')";
            String sysdate="SYSDATE";

            //报表统计组织结构配置表中的各工厂
            udosbcfgidSet.setWhere("UDOSBCFGID IN(SELECT MAX(UDOSBCFGID) FROM UDOSBCFG GROUP BY SITEID) ");
            udosbcfgidSet.reset();
            if(null!=udosbcfgidSet && !udosbcfgidSet.isEmpty()){
                for(int i=0;i<udosbcfgidSet.count();i++){
                    MboRemote udosbcfgidMbo=udosbcfgidSet.getMbo(i);
                    String orgid=udosbcfgidMbo.getString("ORGID");
                    String siteid=udosbcfgidMbo.getString("SITEID");
                    int stgs=udosbcfgidMbo.getInt("STGS")*daysInMonth;//标准工时

                    try {
                        //各工厂下各设备类 mtbf
                        String sblSql=" PLUSCTEMPLATEID IN(SELECT MAX(PLUSCTEMPLATEID) FROM PLUSCTEMPLATE WHERE TEMPLATEID IN(SELECT TEMPLATEID FROM ASSET WHERE ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A' AND TEMPLATEID IS NOT NULL) and ORGID='"+orgid+"' GROUP BY CLASSIFICATIONID)";
                        udplcfgSet.setWhere(sblSql);
                        udplcfgSet.reset();
                        if(null!=udplcfgSet && !udplcfgSet.isEmpty()){
                            for(int j=0;j<udplcfgSet.count();j++){
                                MboRemote udplcfgMbo=udplcfgSet.getMbo(j);
                                String classnum=udplcfgMbo.getString("CLASSIFICATIONID");

                                String sql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE TEMPLATEID in(SELECT TEMPLATEID FROM PLUSCTEMPLATE WHERE CLASSIFICATIONID='"+classnum+"' AND ORGID='"+orgid+"')  AND SDZCZYX='A' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ";
                                wo2Set.setWhere(sql);
                                wo2Set.reset();
                                if(null!=wo2Set && !wo2Set.isEmpty() && wo2Set.count()>0){
                                    try {
                                        double estdur=wo2Set.sum("ESTDUR")/60;//故障维修时间=各工厂下（用户提供的关键设备）故障维修时间合计
                                        double shutdura=wo2Set.sum("SHUTDURA")/60;//停机时间=各工厂下（用户提供的关键设备）相关工单中停机时间（注意/60）合计
                                        int failureCount=wo2Set.count()+1;//故障次数

                                        //工作时间= 日历时间 - （各工厂下（用户提供的关键设备）相关工单中停机时间（注意/60）合计）
                                        double worktime=(daysInMonth*24)-shutdura;

                                        //故障率=（各工厂下（用户提供的关键设备）故障时间/ 统计周期内日历小时数）*100%
                                        double failureRate=(estdur/(daysInMonth*24))*100;

                                        //平均故障间隔=（（统计周期内日历小时数-各工厂下（用户提供的关键设备）停机时间）/ 故障次数）
                                        double mtbf=(((daysInMonth*24)-shutdura)/failureCount);

                                        //今年平均MTBF
                                        MboSetRemote ySumMtbfSet=udplcfgMbo.getMboSet("$UDBTASK", "UDBTASK", "CLASSNUM='"+classnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTBF' ");
                                        double ySumRlxss=ySumMtbfSet.sum("CALTIME")*24;//累计日历小时数
                                        double ySumTjsj=ySumMtbfSet.sum("STOPTIME");//累计停机时间
                                        double ySumGzcs=ySumMtbfSet.sum("FIXTOTAL");//累计故障次数
                                        double ymtbf=0;
                                        if((ySumGzcs+failureCount)>0){
                                            ymtbf=(ySumRlxss+(daysInMonth*24)-(ySumTjsj+shutdura))/(ySumGzcs+failureCount);
                                        }
                                        //去年平均MTBF
                                        double ysSumMtbf=udplcfgMbo.getMboSet("$UDBTASK", "UDBTASK", "CLASSNUM='"+classnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTBF' ").sum("YMTBF");
//                                        double ysmtbf=ysSumMtbf/12;

                                        MboRemote udbtaskMbo=udbtaskSet.add();
                                        udbtaskMbo.setValue("DIMENSION", "CL", 2L);//统计维度 设备类
                                        udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskMbo.setValue("CLASSNUM", classnum, 2L);
                                        udbtaskMbo.setValue("MTBF", mtbf, 2L);
                                        udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskMbo.setValue("FIXTOTAL", failureCount, 2L);
                                        udbtaskMbo.setValue("FIXTIME", estdur,2L);
                                        udbtaskMbo.setValue("STOPTIME", shutdura, 2L);
                                        udbtaskMbo.setValue("YMTBF", ymtbf, 2L);
                                        udbtaskMbo.setValue("LYMTBF", ysSumMtbf, 2L);
                                        udbtaskMbo.setValue("RTYPE", "MTBF", 2L);
                                        udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskMbo.getThisMboSet().save();
                                        udbtaskMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }else{
                                    try {
                                        //平均故障间隔=（（统计周期内日历小时数-各工厂下（用户提供的关键设备）停机时间）/ 故障次数）
                                        double mtbf=(daysInMonth*24)/1;

                                        //今年平均MTBF
                                        MboSetRemote ySumMtbfSet=udplcfgMbo.getMboSet("$UDBTASK", "UDBTASK", "CLASSNUM='"+classnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTBF' ");
                                        double ySumRlxss=ySumMtbfSet.sum("CALTIME")*24;//累计日历小时数
                                        double ySumTjsj=ySumMtbfSet.sum("STOPTIME");//累计停机时间
                                        double ySumGzcs=ySumMtbfSet.sum("FIXTOTAL")+1;//累计故障次数
                                        double ymtbf=(ySumRlxss+(daysInMonth*24)-(ySumTjsj))/(ySumGzcs);

                                        //去年平均MTBF
                                        double ysSumMtbf=udplcfgMbo.getMboSet("$UDBTASK", "UDBTASK", "CLASSNUM='"+classnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTBF' ").sum("YMTBF");
                                        MboRemote udbtaskMbo=udbtaskSet.add();
                                        udbtaskMbo.setValue("DIMENSION", "CL", 2L);//统计维度 设备类
                                        udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskMbo.setValue("CLASSNUM", classnum, 2L);
                                        udbtaskMbo.setValue("MTBF", mtbf, 2L);
                                        udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskMbo.setValue("FIXTOTAL", 0, 2L);
                                        udbtaskMbo.setValue("FIXTIME", 0,2L);
                                        udbtaskMbo.setValue("STOPTIME", 0, 2L);
                                        udbtaskMbo.setValue("YMTBF", ymtbf, 2L);
                                        udbtaskMbo.setValue("LYMTBF", ysSumMtbf, 2L);
                                        udbtaskMbo.setValue("RTYPE", "MTBF", 2L);
                                        udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskMbo.getThisMboSet().save();
                                        udbtaskMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }

                            }
                        }

                        //工厂级单位维修费统计
                        try{
                            //单位维修费统计
                            //维修费=该工厂下产线的所有维修费用合计。（取财务维修费）
                            //单位维修费 = 维修费/实际产量。（实际产量手动录入）（产量=产能配置表的产能）
                            //产能配置表取产能
                            String cnStr="ORGID='"+orgid+"' AND SITEID='"+siteid+"'  AND YEAR='"+currentYear+"' AND MONTH='"+currentMonth+"'";
                            udcapcfgSet.setWhere(cnStr);
                            udcapcfgSet.reset();
                            double cn=0;//产能
                            if(null!=udcapcfgSet && !udcapcfgSet.isEmpty() && udcapcfgSet.count()>0){
//                                MboRemote udcnMbo=udcapcfgSet.getMbo(0);
                                cn=udcapcfgSet.sum("CAPACITY");//产能
                            }

                            //维修费=该工厂下产线的所有维修费用合计。（取财务维修费）
                            String zwxfStr="UDZWXFCONFID IN(SELECT max(UDZWXFCONFID) FROM UDZWXFCONF WHERE ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND NF='"+currentYear+"' AND YF='"+ currentMonth +"' GROUP BY ORGID,SITEID,NF,YF)";
                            udzwxfconfSet.setWhere(zwxfStr);
                            udzwxfconfSet.reset();
                            double dmbtr=udzwxfconfSet.sum("ZWXF");//维修费
                            //单位维修费 = 维修费/实际产量。（实际产量手动录入）
                            double dwwxf=0;
                            if(cn>0){
                                dwwxf=dmbtr/cn;
                            }
                            MboRemote udbtaskWxfMbo=udbtaskSet.add();
                            udbtaskWxfMbo.setValue("DIMENSION", "GC", 2L);//统计维度 工厂级
                            udbtaskWxfMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                            udbtaskWxfMbo.setValue("ORGID", orgid, 2L);
                            udbtaskWxfMbo.setValue("SITEID", siteid, 2L);
                            udbtaskWxfMbo.setValue("YEAR", currentYear+"", 2L);
                            udbtaskWxfMbo.setValue("MONTH", currentMonth+"", 2L);
                            udbtaskWxfMbo.setValue("TOTALCOST", dmbtr, 2L);//产线总维修费
                            udbtaskWxfMbo.setValue("CN", cn, 2L);//产能
                            udbtaskWxfMbo.setValue("DWWXF", dwwxf, 2L);//单位维修费
                            //今年产线平均总维修费
                            double ySumSoumc=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("TOTALCOST");
                            double ySoumc=(ySumSoumc+dwwxf)/currentMonth;
                            //去年产线平均总维修费
                            double ysSumSoumc=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("LYTOTALCOST");
//                                    double ysSoumc=ysSumSoumc/12;
//                            udbtaskWxfMbo.setValue("YTOTALCOSTPJ", ySoumc, 2L);
//                            udbtaskWxfMbo.setValue("LYTOTALCOST", ysSumSoumc, 2L);
                            //今年产线平均产能
                            double ySumCn=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("CN");
                            double ycn=(ySumCn+cn)/currentMonth;
                            //去年产线平均产能
                            double ysCn=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("YCN");
//                                    double yscn=ysCn/12;
//                            udbtaskWxfMbo.setValue("YCN", ycn, 2L);
//                            udbtaskWxfMbo.setValue("LCN", ysCn, 2L);
                            //今年产线平均单位维修费
                            double ySumDwwxf=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("DWWXF");
                            double ydwwxf=(ySumDwwxf+dwwxf)/currentMonth;
                            //去年产线平均单位维修费
                            double ysSumdwwxf=udosbcfgidMbo.getMboSet("$UDBTASK", "UDBTASK", "DIMENSION='GC' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("YDWWXF");
//                            udbtaskWxfMbo.setValue("YDWWXF", ydwwxf, 2L);
//                            udbtaskWxfMbo.setValue("LDWWXF", ysSumdwwxf, 2L);
                            udbtaskWxfMbo.setValue("RTYPE", "SOUMC", 2L);
                            udbtaskWxfMbo.setValue("CURDATE", curdate, 2L);
                            udbtaskWxfMbo.getThisMboSet().save();
                            udbtaskWxfMbo.getThisMboSet().close();
                        }catch (Exception e){
                            e.printStackTrace();
                            e.getMessage();
                            e.getCause();
                        }

                        //设备稼动率-产线级
                        String sbjdlcxStr="UDOSBCFGID IN(SELECT MAX(UDOSBCFGID) FROM UDOSBCFG WHERE ORGID='"+orgid+"' AND SITEID='"+siteid+"' GROUP BY PLINE)";
                        udsbjdlcxSet.setWhere(sbjdlcxStr);
                        udsbjdlcxSet.reset();
                        if(null!=udsbjdlcxSet && !udsbjdlcxSet.isEmpty()){
                            for(int jdl=0;jdl<udsbjdlcxSet.count();jdl++){
                                MboRemote udcxJdlMbo=udsbjdlcxSet.getMbo(jdl);
                                String jdlPline=udcxJdlMbo.getString("PLINE");

                                try{
                                    //设备稼动率
                                    String jdlStr="ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND PLINE='"+jdlPline+"' AND YEAR='"+currentYear+"' AND MONTH='"+currentMonth+"'";
                                    udruntimeSet.setWhere(jdlStr);
                                    udruntimeSet.reset();

                                    double tjsc=0;//计划停机时长
                                    double jhyxsc=0;//计划运行时长（小时）
                                    if(null!=udruntimeSet && !udruntimeSet.isEmpty() && udruntimeSet.count()>0){
                                        MboRemote udruntimeMbo=udruntimeSet.getMbo(0);
//                                        tjsc=udruntimeMbo.getInt("STOPTIME");//计划停机时长
                                        jhyxsc=udruntimeMbo.getDouble("STOPTIME");//计划运行时长（小时） 20240306企微上要求改为计划运行时长
                                    }else{
                                        jhyxsc=stgs;//如果没有配置，则默认标准运行时长
                                    }
//                                    jhyxsc=stgs-tjsc;//计划运行时长（小时）
                                    //故障停机时间=各工厂产线下（用户提供的关键设备）故障停机时间
                                    String jdlGzSql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE PLINE='"+jdlPline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'  AND (STATUS IN('CLOSE','COMP') AND TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ";
                                    wo2Set.setWhere(jdlGzSql);
                                    wo2Set.reset();
                                    double jdlGztjsj=0;//故障停机时间
                                    if(null!=wo2Set && !wo2Set.isEmpty() && wo2Set.count()>0){
                                        jdlGztjsj=wo2Set.sum("SHUTDURA");
                                    }
                                    double jdl_gzsj=jhyxsc-(jdlGztjsj/60);//工作时间 = 计划运行时长- 故障停机时间
                                    //设备稼动率 = (工作时间 / （计划运行时长）)*100%
                                    double equr=0;
                                    if(jhyxsc>0){
                                        equr=(jdl_gzsj/jhyxsc)*100;//设备稼动率 = (工作时间 / （计划运行时长）)*100%
                                    }
                                    MboRemote udbtaskJdlMbo=udbtaskSet.add();
                                    udbtaskJdlMbo.setValue("DIMENSION", "PL", 2L);//统计维度 产线
                                    udbtaskJdlMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskJdlMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskJdlMbo.setValue("PLINE", jdlPline, 2L);
                                    udbtaskJdlMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskJdlMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskJdlMbo.setValue("ACTIVATION", equr, 2L);//稼动率
                                    udbtaskJdlMbo.setValue("JDLGZSJ", jdl_gzsj, 2L);//工作时间
                                    udbtaskJdlMbo.setValue("JDLJHYXSC", jhyxsc, 2L);//计划运行时长
                                    //今年平均稼动率
                                    MboSetRemote ySumequrSet=udcxJdlMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+jdlPline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='EQUR' ");
                                    double gzsjLj=ySumequrSet.sum("JDLGZSJ");//累计工作时间
                                    double jhscLj=ySumequrSet.sum("JDLJHYXSC");//累计计划时长
                                    double yequr=0;
                                    if((jhscLj+jhyxsc)>0){
                                        yequr=((gzsjLj+jdl_gzsj)/(jhscLj+jhyxsc))*100;
                                    }

                                    //去年平均稼动率
                                    double ysSumequr=udcxJdlMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+jdlPline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='EQUR' ").sum("YACTIVATION");
                                    udbtaskJdlMbo.setValue("YACTIVATION", yequr, 2L);  //今年平均稼动率
                                    udbtaskJdlMbo.setValue("LYACTIVATION", ysSumequr, 2L); //去年平均稼动率
                                    udbtaskJdlMbo.setValue("RTYPE", "EQUR", 2L);
                                    udbtaskJdlMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskJdlMbo.getThisMboSet().save();
                                    udbtaskJdlMbo.getThisMboSet().close();
                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
//                                        continue;
                                }
                            }
                        }


                        //各工厂下各产线
                        String cxSql="UDOSBCFGID in(SELECT max(UDOSBCFGID) FROM UDOSBCFG WHERE ORGID='"+orgid+"' AND SITEID ='"+siteid+"' GROUP BY PLINE)";
                        udcxfgSet.setWhere(cxSql);
                        udcxfgSet.reset();
                        if(null!=udcxfgSet && !udcxfgSet.isEmpty()){
                            for(int k=0;k<udcxfgSet.count();k++){
                                MboRemote udcxMbo=udcxfgSet.getMbo(k);
                                String pline=udcxMbo.getString("PLINE");

                                String cxsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'  AND (TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ";
                                wo2Set.setWhere(cxsql);
                                wo2Set.reset();
                                if(null!=wo2Set && !wo2Set.isEmpty() && wo2Set.count()>0){
                                    double estdur=0;
                                    try{
                                        //MTBF
                                        estdur=wo2Set.sum("ESTDUR")/60;//故障维修时间=各工厂中产线下（用户提供的关键设备）故障维修时间合计
                                        double shutdura=wo2Set.sum("SHUTDURA")/60;//停机时间=各工厂中产线下（用户提供的关键设备）相关工单中停机时间（注意/60）合计
                                        int failureCount=wo2Set.count()+1;//故障次数
                                        //工作时间= 日历时间 - （各工厂下（用户提供的关键设备）相关工单中停机时间（注意/60）合计）
                                        double worktime=(daysInMonth*24)-shutdura;
                                        //故障率=（各工厂下（用户提供的关键设备）故障时间/ 统计周期内日历小时数）*100%
                                        double failureRate=(estdur/(daysInMonth*24))*100;
                                        //平均故障间隔=（（统计周期内日历小时数-各工厂下（用户提供的关键设备）停机时间）/ 故障次数）
                                        double mtbf=(((daysInMonth*24)-shutdura)/failureCount);
                                        //今年平均MTBF
                                        MboSetRemote ySumMtbfSetCx=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTBF' ");
                                        double ySumRlxss=ySumMtbfSetCx.sum("CALTIME")*24;//累计日历小时数
                                        double ySumTjsj=ySumMtbfSetCx.sum("STOPTIME");//累计停机时间
                                        double ySumGzcs=ySumMtbfSetCx.sum("FIXTOTAL");//累计故障次数
                                        double ymtbf=0;
                                        if((ySumGzcs+failureCount)>0){
                                            ymtbf=(ySumRlxss+(daysInMonth*24)-(ySumTjsj+shutdura))/(ySumGzcs+failureCount);
                                        }
                                        //去年平均MTBF
                                        double ysSumMtbf=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTBF' ").sum("YMTBF");
                                        MboRemote udbtaskMbo=udbtaskSet.add();
                                        udbtaskMbo.setValue("DIMENSION", "PL", 2L);//统计维度 产线
                                        udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskMbo.setValue("PLINE", pline, 2L);
                                        udbtaskMbo.setValue("MTBF", mtbf, 2L);
                                        udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskMbo.setValue("FIXTOTAL", failureCount, 2L);
                                        udbtaskMbo.setValue("FIXTIME", estdur, 2L);
                                        udbtaskMbo.setValue("STOPTIME", shutdura, 2L);
                                        udbtaskMbo.setValue("YMTBF", ymtbf, 2L);
                                        udbtaskMbo.setValue("LYMTBF", ysSumMtbf, 2L);
                                        udbtaskMbo.setValue("RTYPE", "MTBF", 2L);
                                        udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskMbo.getThisMboSet().save();
                                        udbtaskMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }else{
                                    {
                                        try{
                                            //MTBF
                                            //工作时间= 日历时间 - （各工厂下（用户提供的关键设备）相关工单中停机时间（注意/60）合计）
                                            double worktime=(daysInMonth*24);
                                            //平均故障间隔=（（统计周期内日历小时数-各工厂下（用户提供的关键设备）停机时间）/ 故障次数）
                                            double mtbf=(daysInMonth*24)/1;
                                            //今年平均MTBF
                                            MboSetRemote ySumMtbfSetCx=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTBF' ");
                                            double ySumRlxss=ySumMtbfSetCx.sum("CALTIME")*24;//累计日历小时数
                                            double ySumTjsj=ySumMtbfSetCx.sum("STOPTIME");//累计停机时间
                                            double ySumGzcs=ySumMtbfSetCx.sum("FIXTOTAL")+1;//累计故障次数
                                            double ymtbf=(ySumRlxss+(daysInMonth*24)-(ySumTjsj))/(ySumGzcs);

                                            //去年平均MTBF
                                            double ysSumMtbf=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTBF' ").sum("YMTBF");
                                            MboRemote udbtaskMbo=udbtaskSet.add();
                                            udbtaskMbo.setValue("DIMENSION", "PL", 2L);//统计维度 产线
                                            udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                            udbtaskMbo.setValue("ORGID", orgid, 2L);
                                            udbtaskMbo.setValue("SITEID", siteid, 2L);
                                            udbtaskMbo.setValue("PLINE", pline, 2L);
                                            udbtaskMbo.setValue("MTBF", mtbf, 2L);
                                            udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                            udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                            udbtaskMbo.setValue("FIXTOTAL", 0, 2L);
                                            udbtaskMbo.setValue("FIXTIME", 0, 2L);
                                            udbtaskMbo.setValue("STOPTIME", 0, 2L);
                                            udbtaskMbo.setValue("YMTBF", ymtbf, 2L);
                                            udbtaskMbo.setValue("LYMTBF", ysSumMtbf, 2L);
                                            udbtaskMbo.setValue("RTYPE", "MTBF", 2L);
                                            udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                            udbtaskMbo.getThisMboSet().save();
                                            udbtaskMbo.getThisMboSet().close();
                                        }catch (Exception e){
                                            e.printStackTrace();
                                            e.getMessage();
                                            e.getCause();
                                        }
                                    }
                                }

                                try{
                                    //设备利用率统计
                                    String jdlStr="ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND PLINE='"+pline+"' AND YEAR='"+currentYear+"' AND MONTH='"+currentMonth+"'";
                                    udruntimeSet.setWhere(jdlStr);
                                    udruntimeSet.reset();
                                    double tjsc=0;//计划停机时长
                                    double jhyxsc=0;//计划运行时长（小时）
                                    if(null!=udruntimeSet && !udruntimeSet.isEmpty() && udruntimeSet.count()>0){
                                        MboRemote udruntimeMbo=udruntimeSet.getMbo(0);
//                                        tjsc=udruntimeMbo.getInt("STOPTIME");//计划停机时长
                                        jhyxsc=udruntimeMbo.getDouble("STOPTIME");//计划运行时长（小时） 20240306企微上要求改为计划运行时长
                                    }else{
                                        jhyxsc=stgs;//如果没有配置，则默认标准运行时长
                                    }
//                                    jhyxsc=stgs-tjsc;//计划运行时长（小时）
                                    double lyl=0;
                                    if(stgs>0){
                                        lyl=(jhyxsc/stgs)*100;//利用率 = (计划运行时间/标准运行时间)*100。
                                    }
                                    MboRemote udbtaskLylMbo=udbtaskSet.add();
                                    udbtaskLylMbo.setValue("DIMENSION", "PL", 2L);//统计维度 产线
                                    udbtaskLylMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                    udbtaskLylMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskLylMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskLylMbo.setValue("PLINE", pline, 2L);
                                    udbtaskLylMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskLylMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskLylMbo.setValue("USERATE", lyl, 2L);//设备利用率
                                    udbtaskLylMbo.setValue("JHYXSC", jhyxsc, 2L);//计划运行时长（小时）
                                    udbtaskLylMbo.setValue("STGS", stgs, 2L);//标准运行时间
                                    //今年平均设备利用率
                                    MboSetRemote ySumequsSet=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='EQUS' ");
                                    double jhyxscLj=ySumequsSet.sum("JHYXSC");//累计计划运行时长（小时）
                                    double stgsLj=ySumequsSet.sum("STGS");//累计标准运行时间
                                    double yequs=0;
                                    if((stgsLj+stgs)>0){
                                        yequs=((jhyxscLj+jhyxsc)/(stgsLj+stgs))*100;
                                    }
                                    //去年平均设备利用率
                                    double ysSumequs=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='EQUS' ").sum("YUSERATE");
//                                    double ysequs=ysSumequs/12;
                                    udbtaskLylMbo.setValue("YUSERATE", yequs, 2L);
                                    udbtaskLylMbo.setValue("LYUSERATE", ysSumequs, 2L);
                                    udbtaskLylMbo.setValue("RTYPE", "EQUS", 2L);
                                    udbtaskLylMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskLylMbo.getThisMboSet().save();
                                    udbtaskLylMbo.getThisMboSet().close();
                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
//                                    continue;
                                }

                                try{
                                    //单位维修费统计
                                    //维修费=该工厂下产线的所有维修费用合计。（取财务维修费）
                                    //单位维修费 = 维修费/实际产量。（实际产量手动录入）
                                    //产能配置表取产能
                                    String cnStr="ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND PLINE='"+pline+"' AND YEAR='"+currentYear+"' AND MONTH='"+currentMonth+"'";
                                    udcapcfgSet.setWhere(cnStr);
                                    udcapcfgSet.reset();
                                    double cn=0;//产能
                                    if(null!=udcapcfgSet && !udcapcfgSet.isEmpty() && udcapcfgSet.count()>0){
                                        MboRemote udcnMbo=udcapcfgSet.getMbo(0);
                                        cn=udcnMbo.getDouble("CAPACITY");//产能
                                    }
                                    String lldStr="WORKORDER in(SELECT WONUM FROM UDWORKORDER WHERE APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A' ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'  AND (STATUS IN('CLOSE','COMP')  AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'";
                                    udlldSet.setWhere(lldStr);
                                    udlldSet.reset();
                                    //维修费=该工厂下产线的所有维修费用合计。（取财务维修费）
                                    double dmbtr=0;//维修费 领料单总成本，后期转换为同一单位后的成本 DMBTR
                                    if(null!=udlldSet && !udlldSet.isEmpty() && udlldSet.count()>0){
                                        MboRemote udlldMbo=udlldSet.getMbo(0);
                                        dmbtr=udlldMbo.getDouble("DMBTR");//维修费
                                    }
                                    //单位维修费 = 维修费/实际产量。（实际产量手动录入）
                                    double dwwxf=0;
                                    if(cn>0){
                                        dwwxf=dmbtr/cn;
                                    }
                                    MboRemote udbtaskWxfMbo=udbtaskSet.add();
                                    udbtaskWxfMbo.setValue("DIMENSION", "PL", 2L);//统计维度 产线
                                    udbtaskWxfMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                    udbtaskWxfMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskWxfMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskWxfMbo.setValue("PLINE", pline, 2L);
                                    udbtaskWxfMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskWxfMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskWxfMbo.setValue("TOTALCOST", dmbtr, 2L);//产线总维修费
                                    udbtaskWxfMbo.setValue("CN", cn, 2L);//产能
                                    udbtaskWxfMbo.setValue("DWWXF", dwwxf, 2L);//单位维修费
                                    //今年产线平均总维修费
                                    double ySumSoumc=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("TOTALCOST");
                                    double ySoumc=(ySumSoumc+dwwxf)/currentMonth;
                                    //去年产线平均总维修费
                                    double ysSumSoumc=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("LYTOTALCOST");
//                                    double ysSoumc=ysSumSoumc/12;
                                    udbtaskWxfMbo.setValue("YTOTALCOSTPJ", ySoumc, 2L);
                                    udbtaskWxfMbo.setValue("LYTOTALCOST", ysSumSoumc, 2L);
                                    //今年产线平均产能
                                    double ySumCn=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("CN");
                                    double ycn=(ySumCn+cn)/currentMonth;
                                    //去年产线平均产能
                                    double ysCn=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("YCN");
//                                    double yscn=ysCn/12;
                                    udbtaskWxfMbo.setValue("YCN", ycn, 2L);
                                    udbtaskWxfMbo.setValue("LCN", ysCn, 2L);
                                    //今年产线平均单位维修费
                                    double ySumDwwxf=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOUMC' ").sum("DWWXF");
                                    double ydwwxf=(ySumDwwxf+dwwxf)/currentMonth;
                                    //去年产线平均单位维修费
                                    double ysSumdwwxf=udcxMbo.getMboSet("$UDBTASK", "UDBTASK", "PLINE='"+pline+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOUMC' ").sum("YDWWXF");
//                                    double ysdwwxf=ysSumdwwxf/12;
                                    udbtaskWxfMbo.setValue("YDWWXF", ydwwxf, 2L);
                                    udbtaskWxfMbo.setValue("LDWWXF", ysSumdwwxf, 2L);
                                    udbtaskWxfMbo.setValue("RTYPE", "SOUMC", 2L);
                                    udbtaskWxfMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskWxfMbo.getThisMboSet().save();
                                    udbtaskWxfMbo.getThisMboSet().close();
                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
//                                    continue;
                                }

                            }
                        }

                        //各工厂下各车间
                        String cjSql="DEPTID IN(SELECT max(DEPTID) FROM DEPT WHERE ORGID='"+orgid+"' AND SITEID='"+siteid+"' GROUP BY DEPTNUM) AND ISREPORT=1 ";//AND ISREPORT=1 增加部门是否报表使用字段限制
                        uddeptSet.setWhere(cjSql);
                        uddeptSet.reset();
                        if(null!=uddeptSet && !uddeptSet.isEmpty()){
                            for(int h=0;h<uddeptSet.count();h++){
                                MboRemote udcjMbo=uddeptSet.getMbo(h);
                                String deptnum=udcjMbo.getString("DEPTNUM");

                                String cjsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP') AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ";
                                wo2Set.setWhere(cjsql);
                                wo2Set.reset();
                                if(null!=wo2Set && !wo2Set.isEmpty() && wo2Set.count()>0){
                                    try {
                                        //MTTR（平均故障维修时间）  用户提供的关键设备(20240117提出所有设备，不限定a类设备)
                                        double estdur=wo2Set.sum("ESTDUR")/60;//故障维修时间=各车间下（用户提供的关键设备）故障维修时间合计
                                        int failureCount=wo2Set.count();//故障次数
                                        //MTTR=Σ各工厂（用户提供的关键设备）故障维修时间/Σ各工厂（用户提供的关键设备）故障次数
                                        double mttr=estdur/failureCount;
                                        //今年平均MTTR
                                        MboSetRemote ySumMttrSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTTR' ");
                                        double gzwxsjLj=ySumMttrSet.sum("FIXTIME");//累计故障维修时间
                                        double ypjgzwxsj=(gzwxsjLj+estdur)/currentMonth;//今年平均故障维修时间
                                        double gzcsLj=ySumMttrSet.sum("FIXTOTAL");//累计故障次数
                                        double ypjwxcs=(gzcsLj+failureCount)/currentMonth;//今年平均维修次数
                                        double ymttr=0;
                                        if((gzcsLj+failureCount)>0){
                                            ymttr=(gzwxsjLj+estdur)/(gzcsLj+failureCount);
                                        }
                                        //去年平均MTTR
                                        MboSetRemote ysSumMttrSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTTR' ");
                                        double ysSumMttr=ysSumMttrSet.sum("YMTTR"); //去年平均MTTR
                                        double lypjgzwxsj=ysSumMttrSet.sum("YPJGZWXSJ");//去年平均故障维修时间
                                        double lypjwxcs=ysSumMttrSet.sum("YPJWXCS");//去年平均维修次数
                                        MboRemote udbtaskMbo=udbtaskSet.add();
                                        udbtaskMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                        udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskMbo.setValue("DEPTNUM", deptnum, 2L);
                                        udbtaskMbo.setValue("MTTR", mttr, 2L);
                                        udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskMbo.setValue("FIXTOTAL", failureCount, 2L);//故障次数
                                        udbtaskMbo.setValue("FIXTIME", estdur,2L);//维修时间
                                        udbtaskMbo.setValue("YMTTR", ymttr, 2L);//今年平均MTTR
                                        udbtaskMbo.setValue("LYMTTR", ysSumMttr, 2L);//去年平均MTTR
//                                        udbtaskMbo.setValue("YPJGZWXSJ", estdur, 2L);//今年平均故障维修时间
//                                        udbtaskMbo.setValue("LYPJGZWXSJ", lypjgzwxsj, 2L);//去年平均故障维修时间
//                                        udbtaskMbo.setValue("YPJWXCS", ypjwxcs, 2L);//今年平均维修次数
//                                        udbtaskMbo.setValue("LYPJWXCS", lypjwxcs, 2L);//去年平均维修次数
                                        udbtaskMbo.setValue("RTYPE", "MTTR", 2L);
                                        udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskMbo.getThisMboSet().save();
                                        udbtaskMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }else{
                                    try {
                                        //今年平均MTTR
                                        MboSetRemote ySumMttrSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='MTTR' ");
                                        double gzwxsjLj=ySumMttrSet.sum("FIXTIME");//累计故障维修时间
                                        double ypjgzwxsj=(gzwxsjLj)/currentMonth;//今年平均故障维修时间
                                        double gzcsLj=ySumMttrSet.sum("FIXTOTAL");//累计故障次数
                                        double ypjwxcs=(gzcsLj)/currentMonth;//今年平均维修次数
                                        double ymttr=0;
                                        if((gzcsLj)>0){
                                            ymttr=(gzwxsjLj)/(gzcsLj);
                                        }else{
                                            int cxcount=ySumMttrSet.count();
                                            if(cxcount>0){
                                                ymttr=(gzwxsjLj)/(cxcount);
                                            }else{
                                                ymttr=(gzwxsjLj)/(1);
                                            }
                                        }
                                        //去年平均MTTR
                                        MboSetRemote ysSumMttrSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='MTTR' ");
                                        double ysSumMttr=ysSumMttrSet.sum("YMTTR"); //去年平均MTTR
                                        double lypjgzwxsj=ysSumMttrSet.sum("YPJGZWXSJ");//去年平均故障维修时间
                                        double lypjwxcs=ysSumMttrSet.sum("YPJWXCS");//去年平均维修次数
                                        MboRemote udbtaskMbo=udbtaskSet.add();
                                        udbtaskMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                        udbtaskMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskMbo.setValue("DEPTNUM", deptnum, 2L);
                                        udbtaskMbo.setValue("MTTR", 0, 2L);
                                        udbtaskMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskMbo.setValue("FIXTOTAL", 0, 2L);//故障次数
                                        udbtaskMbo.setValue("FIXTIME", 0,2L);//维修时间
                                        udbtaskMbo.setValue("YMTTR", ymttr, 2L);//今年平均MTTR
                                        udbtaskMbo.setValue("LYMTTR", ysSumMttr, 2L);//去年平均MTTR
//                                        udbtaskMbo.setValue("YPJGZWXSJ", ypjgzwxsj, 2L);//今年平均故障维修时间
//                                        udbtaskMbo.setValue("LYPJGZWXSJ", lypjgzwxsj, 2L);//去年平均故障维修时间
//                                        udbtaskMbo.setValue("YPJWXCS", ypjwxcs, 2L);//今年平均维修次数
//                                        udbtaskMbo.setValue("LYPJWXCS", lypjwxcs, 2L);//去年平均维修次数
                                        udbtaskMbo.setValue("RTYPE", "MTTR", 2L);
                                        udbtaskMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskMbo.getThisMboSet().save();
                                        udbtaskMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }


                                //设备重大故障统计
                                //重大故障次数= 单位时间内故障工单(本月内的)，且标识为重大故障，工单状态为已关闭->已关闭(20240117提出改为已完成)
                                //用户提供的关键设备，故障停机时间30分钟以上算重大故障。
                                String zdgzsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP') AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' AND SHUTDURA>30 ";
                                wo2Set.setWhere(zdgzsql);
                                wo2Set.reset();
                                if(null!=wo2Set && !wo2Set.isEmpty() && wo2Set.count()>0){
                                    try{
                                        int zdgzCount=wo2Set.count();//重大故障次数
                                        MboRemote udbtaskZdgzMbo=udbtaskSet.add();
                                        udbtaskZdgzMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                        udbtaskZdgzMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskZdgzMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskZdgzMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskZdgzMbo.setValue("DEPTNUM", deptnum, 2L);
                                        udbtaskZdgzMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskZdgzMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskZdgzMbo.setValue("MAJORFT", zdgzCount, 2L);//重大故障次数
                                        //今年平均重大故障次数
                                        double ySumZdgzcs=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOMEQF' ").sum("MAJORFT");
                                        double yZdgzcs=(ySumZdgzcs+zdgzCount)/currentMonth;
                                        //去年平均重大故障次数
                                        double ysSumZdgzcs=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOMEQF' ").sum("YMAJORFTPJ");
                                        udbtaskZdgzMbo.setValue("YMAJORFTPJ", yZdgzcs, 2L);//今年重大故障平均次数
                                        udbtaskZdgzMbo.setValue("LYMAJORFTPJ", ysSumZdgzcs, 2L);//去年重大故障平均次数
                                        udbtaskZdgzMbo.setValue("RTYPE", "SOMEQF", 2L);
                                        udbtaskZdgzMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskZdgzMbo.getThisMboSet().save();
                                        udbtaskZdgzMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }else{
                                    try{
                                        int zdgzCount=0;//重大故障次数
                                        MboRemote udbtaskZdgzMbo=udbtaskSet.add();
                                        udbtaskZdgzMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                        udbtaskZdgzMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                        udbtaskZdgzMbo.setValue("ORGID", orgid, 2L);
                                        udbtaskZdgzMbo.setValue("SITEID", siteid, 2L);
                                        udbtaskZdgzMbo.setValue("DEPTNUM", deptnum, 2L);
                                        udbtaskZdgzMbo.setValue("YEAR", currentYear+"", 2L);
                                        udbtaskZdgzMbo.setValue("MONTH", currentMonth+"", 2L);
                                        udbtaskZdgzMbo.setValue("MAJORFT", zdgzCount, 2L);//重大故障次数
                                        //今年平均重大故障次数
                                        double ySumZdgzcs=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOMEQF' ").sum("MAJORFT");
                                        double yZdgzcs=(ySumZdgzcs+zdgzCount)/currentMonth;
                                        //去年平均重大故障次数
                                        double ysSumZdgzcs=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOMEQF' ").sum("YMAJORFTPJ");
                                        udbtaskZdgzMbo.setValue("YMAJORFTPJ", yZdgzcs, 2L);//今年重大故障平均次数
                                        udbtaskZdgzMbo.setValue("LYMAJORFTPJ", ysSumZdgzcs, 2L);//去年重大故障平均次数
                                        udbtaskZdgzMbo.setValue("RTYPE", "SOMEQF", 2L);
                                        udbtaskZdgzMbo.setValue("CURDATE", curdate, 2L);
                                        udbtaskZdgzMbo.getThisMboSet().save();
                                        udbtaskZdgzMbo.getThisMboSet().close();
                                    }catch (Exception e){
                                        e.printStackTrace();
                                        e.getMessage();
                                        e.getCause();
                                    }
                                }


                                try{
                                    //故障责任占比统计 当前车间内所有工单
                                    String gzzrsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP') AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' ";
                                    wo2Set.setWhere(gzzrsql);
                                    wo2Set.reset();
                                    double gzsj=wo2Set.sum("SHUTDURA")/60;//故障时间=某段时间内已关闭故障检修工单中停机时间之和。->已关闭（20240117提出改为已完成）

                                    String gzzr_wbsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND SDZCZYX='A')  AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP') AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02' AND GZDUTY='2'  ";
                                    wo2Set.setWhere(gzzr_wbsql);
                                    wo2Set.reset();
                                    double wbbmzrsj=wo2Set.sum("SHUTDURA")/60;//维保部门责任时间=某段时间内已关闭故障检修工单中标识了使用部门责任的停机时间之和。->已关闭（20240117提出改为已完成）
                                    double wbzb=0;
                                    if(gzsj>0){
                                        wbzb=(wbbmzrsj/gzsj)*100;//维保占比=故障责任为维保责任的本月的工单停机时间总时长/故障时间
                                    }
                                    MboRemote udbtaskGzzrzbMbo=udbtaskSet.add();
                                    udbtaskGzzrzbMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                    udbtaskGzzrzbMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                    udbtaskGzzrzbMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskGzzrzbMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskGzzrzbMbo.setValue("DEPTNUM", deptnum, 2L);
                                    udbtaskGzzrzbMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskGzzrzbMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskGzzrzbMbo.setValue("WBGZSJ", gzsj, 2L);//故障时间
                                    udbtaskGzzrzbMbo.setValue("WBBMZRSJ", wbbmzrsj, 2L);//维保部门责任时间
                                    udbtaskGzzrzbMbo.setValue("WBZRZB", wbzb, 2L);//维保部门占比
                                    //今年平均故障责任占比统计
                                    MboSetRemote ySumGzzrSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='SOTPFR' ");
                                    double wbbmzrsjLj=ySumGzzrSet.sum("WBBMZRSJ");//累计维保部门责任时间
                                    double gzsjLj=ySumGzzrSet.sum("WBGZSJ");//累计故障时间
                                    double yGzzrzb=0;
                                    if((gzsjLj+gzsj)>0){
                                        yGzzrzb=((wbbmzrsjLj+wbbmzrsj)/(gzsjLj+gzsj))*100;
                                    }
                                    //去年平均故障责任占比统计
                                    double ysSumGzzrzb=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOTPFR' ").sum("YWBZRZB");
//                                    double ysGzzrzb=ysSumGzzrzb/12;
                                    udbtaskGzzrzbMbo.setValue("YWBZRZB", yGzzrzb, 2L);//今年平均故障责任占比统计
                                    udbtaskGzzrzbMbo.setValue("LYWBZRZB", ysSumGzzrzb, 2L);//去年平均故障责任占比统计
//                                    //今年平均故障时间
                                    double yGzzrsj=(gzsjLj+gzsj)/currentMonth;
                                    //去年平均故障时间
                                    double ysSumGzsj=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='SOTPFR' ").sum("YWBGZSJ");
//                                    double ysGzzrzb=ysSumGzzrzb/12;
                                    udbtaskGzzrzbMbo.setValue("YWBGZSJ", yGzzrsj, 2L);//今年平均故障时间
                                    udbtaskGzzrzbMbo.setValue("LWBGZSJ", ysSumGzsj, 2L);//去年平均故障时间
                                    udbtaskGzzrzbMbo.setValue("RTYPE", "SOTPFR", 2L);
                                    udbtaskGzzrzbMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskGzzrzbMbo.getThisMboSet().save();
                                    udbtaskGzzrzbMbo.getThisMboSet().close();
                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
//                                    continue;
                                }

                                try{
                                    //工单完成率
                                    //工单数量= 时间段内该业务线下各工厂各车间创建的工单数量合计
                                    String gdslsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'  AND TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR(sysdate, 'YYYY-MM')  ";//AND MAINTYPE='02' 取消工单类型为故障限制
                                    wo2Set.setWhere(gdslsql);
                                    wo2Set.reset();
                                    double gdsl=0;
                                    if(null!=wo2Set && !wo2Set.isEmpty()){
                                        gdsl=wo2Set.count();//工单数量= 时间段内该业务线下各工厂各车间创建的工单数量合计
                                    }
                                    //工单完成数量= 时间段内该业务线下各工厂创建并完成的工单数量合计
                                    String gdwcslsql="APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP') AND  TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR(sysdate, 'YYYY-MM') AND TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR(sysdate, 'YYYY-MM')  )    ";//AND MAINTYPE='02' 取消工单类型为故障限制
                                    wo2Set.setWhere(gdwcslsql);
                                    wo2Set.reset();
                                    double gdwcsl=0;
                                    if(null!=wo2Set && !wo2Set.isEmpty()){
                                        gdwcsl=wo2Set.count();//工单完成数量= 时间段内该业务线下各工厂创建并完成的工单数量合计
                                    }
                                    //工单完成率= 工单完成数量/(工单总数量)*100
                                    double gdwcl=0;
                                    if(gdsl>0){
                                        gdwcl=(gdwcsl/gdsl)*100;
                                    }
                                    MboRemote udbtaskGdwclMbo=udbtaskSet.add();
                                    udbtaskGdwclMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                    udbtaskGdwclMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                    udbtaskGdwclMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskGdwclMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskGdwclMbo.setValue("DEPTNUM", deptnum, 2L);
                                    udbtaskGdwclMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskGdwclMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskGdwclMbo.setValue("GDWCSL", gdwcsl, 2L);//工单完成数量
                                    udbtaskGdwclMbo.setValue("GDSL", gdsl, 2L);//工单数量
                                    udbtaskGdwclMbo.setValue("WORATE", gdwcl, 2L);//工单完成率
                                    //今年平均工单完成率
                                    MboSetRemote ySumGdwclSet=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='WOCR' ");
                                    double gdwcslLj=ySumGdwclSet.sum("GDWCSL");//累计工单完成数量
                                    double gdslLj=ySumGdwclSet.sum("GDSL");//累计工单数量
                                    double yGdwcl=0;
                                    if((gdslLj+gdsl)>0){
                                        yGdwcl=((gdwcslLj+gdwcsl)/(gdslLj+gdsl))*100;
                                    }
                                    //去年工单平均完成率
                                    double ysSumGdwcl=udcjMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnum+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='WOCR' ").sum("YWORATE");
                                    udbtaskGdwclMbo.setValue("YWORATE", yGdwcl, 2L);
                                    udbtaskGdwclMbo.setValue("LYWORATE", ysSumGdwcl, 2L);
                                    udbtaskGdwclMbo.setValue("RTYPE", "WOCR", 2L);
                                    udbtaskGdwclMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskGdwclMbo.getThisMboSet().save();
                                    udbtaskGdwclMbo.getThisMboSet().close();
                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
                                }

                            }

                        }


                        //人员利用率 取报表维修人员配置表中的车间
                        String bbwxyrCjSql="UDWXRYCONFID IN(SELECT max(UDWXRYCONFID) FROM UDWXRYCONF WHERE ORGID='"+orgid+"' AND SITEID='"+siteid+"' GROUP BY DEPTNUM) ";
                        udwxryconfSet.setWhere(bbwxyrCjSql);
                        udwxryconfSet.reset();
                        if(null!=udwxryconfSet && !udwxryconfSet.isEmpty()) {
                            for (int p = 0; p < udwxryconfSet.count(); p++) {
                                MboRemote udcjpMbo = udwxryconfSet.getMbo(p);
                                String deptnumP = udcjpMbo.getString("DEPTNUM");

                                //取报表维修人员配置表中当前车间下的人员数量
                                udwxryconf2Set.setWhere("ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND DEPTNUM='"+deptnumP+"' AND PERSONID in(SELECT PERSONID from PERSON WHERE STATUS='ACTIVE' AND LOCATIONORG='"+orgid+"' AND LOCATIONSITE='"+siteid+"')");
                                udwxryconf2Set.reset();
                                int wxryCount=udwxryconf2Set.count();//维修人员数量

                                //人员利用率
                                try{
                                    //标准工时：8h/天*当月天数,取人员标准工时配置表，没有则按这公式
                                    String rypzbStr="ORGID='"+orgid+"' AND SITEID='"+siteid+"'";
                                    udstaskSet.setWhere(rypzbStr);
                                    udstaskSet.reset();
                                    int bzgs=0;//标准工时
                                    if(null!=udstaskSet && !udstaskSet.isEmpty() && udstaskSet.count()>0){
                                        bzgs=(udstaskSet.getMbo(0).getInt("PSTIME")*daysInMonth)*wxryCount;
                                    }else{
                                        bzgs=(8*daysInMonth)*wxryCount;
                                    }
                                    //工单工时：工单中的人员配置表中的实际人员工时
                                    String gdsjgssql="LABORCODE IN(SELECT PERSONID FROM UDWXRYCONF WHERE DEPTNUM='"+deptnumP+"') AND parentid in(SELECT UDWORKORDERID FROM UDWORKORDER WHERE APPNAME IN('UDWORKORDER','UDWORKORDERAPP') AND ASSETNUM in(SELECT ASSETNUM FROM ASSET WHERE SDSYBM='"+deptnumP+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"'  ) AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND (STATUS IN('CLOSE','COMP')  AND  TO_CHAR(STATUSDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')) AND MAINTYPE='02') and ISPHY=1 and LTYPE=1";
                                    udplmawtSet.setWhere(gdsjgssql);
                                    udplmawtSet.reset();
                                    double laborhs=0;//工单工时
                                    if(null!=udplmawtSet && !udplmawtSet.isEmpty() && udplmawtSet.count()>0){
                                        laborhs=udplmawtSet.sum("LABORHRS");
                                    }
                                    //点检保养工时：点检保养花费的时间（人员配置表中的点检单的执行人（任务耗时））
                                    String djrwStr="POINTTOOLS in(SELECT PERSONID FROM UDWXRYCONF WHERE DEPTNUM='"+deptnumP+"') AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND TO_CHAR(CREATEDATE, 'YYYY-MM') = TO_CHAR("+sysdate+", 'YYYY-MM')  ";
                                    spotrunSet.setWhere(djrwStr);
                                    spotrunSet.reset();
                                    double djbygs=0;//点检保养工时
                                    if(null!=spotrunSet && !spotrunSet.isEmpty() && spotrunSet.count()>0){
                                        for(int dk=0;dk<spotrunSet.count();dk++){
                                            if(null!=spotrunSet.getMbo(dk).getString("POINTEQUP") && !"".equalsIgnoreCase(spotrunSet.getMbo(dk).getString("POINTEQUP"))){
                                                djbygs=djbygs+Double.valueOf(spotrunSet.getMbo(dk).getString("POINTEQUP"));
                                            }
                                        }
                                    }

                                    //负荷率（人员利用率）= （点检保养记录的耗时+工单工时）工时/标准工时
                                    double rylyl=0;
                                    if(bzgs>0 ){
                                        rylyl=(((djbygs+laborhs)/60)/bzgs)*100;
                                    }
                                    MboRemote udbtaskRyMbo=udbtaskSet.add();
                                    udbtaskRyMbo.setValue("DIMENSION", "DL", 2L);//统计维度 车间
                                    udbtaskRyMbo.setValue("CALTIME", daysInMonth, 2L);//日历时间
                                    udbtaskRyMbo.setValue("ORGID", orgid, 2L);
                                    udbtaskRyMbo.setValue("SITEID", siteid, 2L);
                                    udbtaskRyMbo.setValue("DEPTNUM", deptnumP, 2L);
                                    udbtaskRyMbo.setValue("YEAR", currentYear+"", 2L);
                                    udbtaskRyMbo.setValue("MONTH", currentMonth+"", 2L);
                                    udbtaskRyMbo.setValue("GS", ((djbygs+laborhs)/60), 2L);//（点检保养记录的耗时+工单工时）工时
                                    udbtaskRyMbo.setValue("SWH", bzgs, 2L);//人员标准工时
                                    udbtaskRyMbo.setValue("PLR", rylyl, 2L);//人员负荷率（人员利用率）
                                    //今年平均人员利用率
                                    MboSetRemote ySumRylylSet=udcjpMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnumP+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+currentYear+"' AND RTYPE='PUR' ");
                                    double gsLj=ySumRylylSet.sum("GS");//累计工时
                                    double swhLj=ySumRylylSet.sum("SWH");//累计人员标准工时
                                    double yRylyl=0;
                                    if((swhLj+bzgs)>0){
                                        yRylyl=((gsLj+((djbygs+laborhs)/60))/(swhLj+bzgs))*100;
                                    }
                                    //去年平均人员利用率
                                    double ysSumRylyl=udcjpMbo.getMboSet("$UDBTASK", "UDBTASK", "DEPTNUM='"+deptnumP+"' AND ORGID='"+orgid+"' AND SITEID='"+siteid+"' AND YEAR='"+(currentYear-1)+"' AND RTYPE='PUR' ").sum("YPLR");
//                                    double ysRyly=ysSumRylyl/12;
                                    udbtaskRyMbo.setValue("YPLR", yRylyl, 2L);//今年平均人员利用率
                                    udbtaskRyMbo.setValue("LYPLR", ysSumRylyl, 2L);//去年平均人员利用率
                                    udbtaskRyMbo.setValue("RTYPE", "PUR", 2L);//类型
                                    udbtaskRyMbo.setValue("CURDATE", curdate, 2L);
                                    udbtaskRyMbo.getThisMboSet().save();
                                    udbtaskRyMbo.getThisMboSet().close();

                                }catch (Exception e){
                                    e.printStackTrace();
                                    e.getMessage();
                                    e.getCause();
//                                    continue;
                                }
                            }
                        }

                    }catch (Exception e){
                        e.printStackTrace();
                        e.getMessage();
                        e.getCause();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            e.getMessage();
            e.getCause();
        }finally {
            System.gc();
        }
    }


}
