zoukankan      html  css  js  c++  java
  • 任务调配管理

    /**
     * 音泰思计算机技术(成都)有限公司
     * 2017年11月21日  17:55:18
     *  
     */
    package com.qhyf.app.bl.service;
    
    import java.text.ParseException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.jfinal.core.PageInfo;
    import com.qhyf.app.bl.BlConstant;
    import com.qhyf.app.bl.base.controller.QhyfController;
    import com.qhyf.app.bl.base.service.QhyfService;
    import com.qhyf.app.bl.notify.cordys.model.BpmLastActivity;
    
    import club.newepoch.cordysclient.api.PerformTaskApi;
    import club.newepoch.cordysclient.exception.CordysException;
    import club.newepoch.persistent.db.common.Db;
    import club.newepoch.persistent.db.common.Page;
    import club.newepoch.persistent.db.exception.ActiveRecordException;
    import club.newepoch.persistent.db.pojo.Record;
    import club.newepoch.utils.AssertUtils;
    import club.newepoch.utils.DateUtils;
    import club.newepoch.utils.StringUtils;
    
    /**
     * 单证任务调配管理Service
     * 
     * @author tangzheng
     *
     */
    public class BizDocumentTaskDeployService extends QhyfService {
    
        /**
         * 获取单证任务调配管理信息列表
         * 
         * @param ctr
         * @return
         * @throws ActiveRecordException
         */
        public Page<Record> getTaskList(QhyfController ctr) throws ActiveRecordException, ParseException {
            Page<Record> taskDeployPage = null;
            List<Object> paras = new ArrayList<Object>();
            // 获取分页信息
            PageInfo pageInfo = ctr.getPageInfo();
            AssertUtils.notNull(pageInfo, "分页信息不能为空");
            // 设置排序
            String order = ctr.getOrderString(pageInfo);
            // 查询条件
            String where = "";
            // 获取姓名
            String userName = ctr.getPara("userName");
            // 不为空时添加查询条件
            userName = strToEscape(userName);
            if (StringUtils.notBlank(userName)) {
                where += " and a.user_name like  ? ";
                paras.add("%" + userName + "%");
            }
            // 获取任务状态
            String taskState = ctr.getPara("taskState");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(taskState)) {
                if (taskState.equals("1")) {
                    where += " and z.status = '已完成 ' ";
                } else if (taskState.equals("0")) {
                    where += " and z.status = '已领取'";
                }
            }
            // 获取在线状态 onlineState online_state
            String onlineState = ctr.getPara("onlineState");
            // int a = Integer.parseInt(onlineState);
            // 不为空时添加查询条件
            if (StringUtils.notBlank(onlineState)) {
                where += " and b.online_state = ? ";
                paras.add(onlineState);
            }
            // 获取日期-起
            String startDate = ctr.getPara("startDate"); // 2018-08-03
            // 获取日期-至
            String endDate = ctr.getPara("endDate");// 2018-08-03
            // 当无查询条件时,默认查询当前时间的
            String climeDate = "";
            String completeDate = "";
            if (StringUtils.notBlank(startDate) && StringUtils.notBlank(endDate)) {
                climeDate = " and " + DateUtils.parseDate(startDate).getTime() + "< a.claim_time and a.claim_time <"
                        + DateUtils.parseDate(endDate).getTime();
                completeDate = " and " + DateUtils.parseDate(startDate).getTime()
                        + "< a.complete_time and a.complete_time <" + DateUtils.parseDate(endDate).getTime();
            } else {
                  climeDate ="&& FROM_UNIXTIME(a.claim_time/1000,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')";
                  completeDate ="&& FROM_UNIXTIME(a.complete_time/1000,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')";
            }
            String selectSql = "SELECT "
                                + "    a.user_name, "
                                + "    a.user_id, " 
                                + "    a.uuid, " 
                                + "    b.group_id, "
                                + "    b.online_state, " 
                                + "    z.task_user_uuid, " 
                                + "    z.pay_priority, " 
                                + "    z.claim_num, "
                                + "    z.complete_num, " 
                                + "( z.claim_num+z.complete_num) as total," 
                                + "    z. STATUS ";
            String fromSql = String.format("FROM " 
                                + " sys_user a, "
                    + " biz_document_user_info b,  " 
                                + " ( " + "    SELECT "
                    + "        b.user_uuid AS task_user_uuid, "
                                + "        a. STATUS, " 
                    + "        COUNT( "
                    + "            CASE " 
                    + "            WHEN d.pay_priority = 1 THEN "
                    + "                '急单个数' "
                    + "            END " + "        ) AS pay_priority, " 
                    + "        COUNT( " + " CASE "
                    + "            WHEN (a. STATUS = '已领取' %s) THEN "
                    + "                '已领取个数' " + "            END "
                    + "        ) AS claim_num, " 
                    + "        COUNT( " + " CASE "
                    + "            WHEN (a. STATUS = '已完成' %s) THEN "
                    + "                '已完成个数' " + "            END "
                    + "        ) AS complete_num " 
                    + "    FROM " 
                    + "        bpm_activity a, " 
                    + "     bpm_task_user b,   "
                    + "     bpm_process_instance c,  " 
                    + "     biz_pay_comfirm_info d  " 
                    + "    WHERE "
                    + "        a.ACTIVITY_NAME IN ( "
                    + "            '单证线上初审', " 
                    + "            '单证线上复审', "
                    + "            '单证线下纸质审核', " 
                    + "            '单证审核纸质资料', " 
                    + "            '单证线上审核', "
                    + "            '项目单证线下纸质审核' " + "        ) "
                    + "    AND a.sys_status = b.sys_status = c.sys_status = d.sys_status = 1 " 
                    + "AND a.task_id = b.task_id "
                    + "AND a.instance_id = c.instance_id "
                    + "AND c.biz_uuid = d.uuid " 
                    + "    GROUP BY "
                    + "        b.user_uuid " + ") z  "
                    + "WHERE " + " a.uuid = z.task_user_uuid " 
                    + "AND a.uuid = b.user_id "
                    + "AND a.sys_status = 1 " 
                    + "AND b.sys_status = 1 " 
                    + "%s ", climeDate, completeDate, where);
            taskDeployPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSql, fromSql + order,
                    paras.toArray());
            // 获取登录用户uuid u1038
            String loginUserID = ctr.getCurrentUser().getStr(BlConstant.FIELD_USER_ID);
            boolean isGroupLeader = false;
            String groupId = null;
            // 获取组长的id,和那条数据的uuid
            String sql = "select uuid,group_leader_id from biz_document_group_info where sys_status = 1";
            List<Record> list = Db.find(sql);
            isGroup: for (Record r : list) {
                // 查询出来的组长的id为多条,拆开一下
                String[] strings = r.getStr("groupLeaderId").split(",");
                // 便利数组
                for (String s : strings) {
                    // 便利出来的 组长的id和当前用户的uuid一样的话,就确定为组长了
                    if (s.equals(loginUserID)) {
                        // 因为前段我么你只要一个true,false 的结果来判断按钮是否可用
                        // 所以申请了一个变量 ,来赋值 一下
                        isGroupLeader = true;
                        groupId = r.getStr("uuid");
                        break isGroup;
                    }
                }
            }
            // 如果为true的话
            if (isGroupLeader) {
                // 便利 当前的这个 taskDeployPage.getList() 查询出来的所有的数据
                for (Record record : taskDeployPage.getList()) {
                    // 如果查询出来的组的id和 组长的那条uuid相同的话,就设置一个标志位返回给前端能使用
                    if (record.getStr("groupId").equals(groupId)) { // 说明为同一个组的,当前用户为组长,其他人为组员
                        record.set("isGroup", true);
                        record.set("isGroup", false);
                    }
                }
            }
            for (Record record : taskDeployPage.getList()) {
                boolean daishen = false;
                // long completeNum = record.getLong("completeNum"); // 完成的数量
                long yiLingQuStatus = record.getLong("claimNum"); // 待审总数
                // 待审总数
                if (yiLingQuStatus >= 1) {
                    daishen = true;
                }
                record.set("daishen", daishen);
                // record.set("total", completeNum+yiLingQuStatus);
            }
            return taskDeployPage;
        }
    
        /**
         * 获取待完成单据信息列表
         * @param ctr
         * @return
         * @throws ActiveRecordException
         */
        public Page<Record> getCompletedList(QhyfController ctr) throws ActiveRecordException {
            Page<Record> onlineTaskPage = null;
            Page<Record> offlineTaskPage = null;
            Page<Record> admittanceTaskPage = null;
            List<String> paras = new ArrayList<String>();
            // 获取主界面里面的对应点击人的uuid
            // String mainUserId =ctr.getPara("mainUuid");
            // StringUtils.notBlank(mainUserId);
            // 获取分页信息
            PageInfo pageInfo = ctr.getPageInfo();
            AssertUtils.notNull(pageInfo, "分页信息不能为空");
            // 设置排序
            String order = ctr.getOrderString(pageInfo);
            // 查询条件
            String where1 = "";
            String where2 = "";
            String where3 = "";
            // UserId 不能为空 上个界面传入过来的
            // String minUserId =ctr.getPara("mainUserId");
            String mainUserId = ctr.getPara("mainUuid");
            // StringUtils.notBlank(minUserId);
            if (StringUtils.notBlank(mainUserId)) {
                where1 += " and  b.user_uuid = ?";
                paras.add(mainUserId);
            }
            // 获取单据类型
            String documentType = ctr.getPara("documentType");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(documentType)) {
                where1 += " and d.pay_priority = ? ";
                paras.add(documentType);
            }
            // 获取任务类型
            String taskId = ctr.getPara("taskId");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(taskId)) {
                where1 += " and  e.uuid = ? ";
                paras.add(taskId);
            }
            // 获取付款确认书编号
            String payId = ctr.getPara("payId");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(payId)) {
                where1 += " and d.pay_id like ? ";
                paras.add('%'+payId+'%');
            }
    
            if (StringUtils.notBlank(mainUserId)) {
                where2 += " and  b.user_uuid = ?";
                paras.add(mainUserId);
            }
            if (StringUtils.notBlank(taskId)) {
                where2 += " and  e.uuid = ? ";
                paras.add(taskId);
            }
            if (StringUtils.notBlank(payId)) {
                where2 += " and d.pay_id like ? ";
                paras.add('%'+payId+'%');
            }
            if (StringUtils.notBlank(mainUserId)) {
                where3 += " and  b.user_uuid = ?";
                paras.add(mainUserId);
            }
            /*if (StringUtils.notBlank(documentType)) {
                where2 += " and d.pay_priority = ? ";
                paras.add(documentType);
            }*/
            if (StringUtils.notBlank(documentType)) {
                where3 += " and d.pay_priority = ? ";
                paras.add(documentType);
            }
            if (StringUtils.notBlank(taskId)) {
                where3 += " and  e.uuid = ? ";
                paras.add(taskId);
            }
            if (StringUtils.notBlank(payId)) {
                where3 += " and d.pay_id like  ? ";
                paras.add('%'+payId+'%');
            }
            String onlineTaskName = "a.ACTIVITY_NAME IN ('单证线上初审','单证线上复审')";
            String admittanceTaskName = "a.ACTIVITY_NAME IN ('单证线上审核','项目单证线下纸质审核')";
            String offlineTaskName = "a.ACTIVITY_NAME IN ('单证线下纸质审核','项目单证线下纸质审核')";
            String select = " SELECT "
                    + "     task_uuid, "
                    + "    task_name, "
                    + "     task_user_uuid, " 
                    + " pay_id  , " 
                    + "    uuid, " 
                    + "    pay_priority, "
                    + "    core_enterprise_name, "
                    + "    financial_institutions_name, "
                    + "    suppliers_name, "
                    + "    item_company_name, "
                    + "    num," 
                    + "    invoice_amount ";
            // 保理线上
            // onlineTaskName = "a.ACTIVITY_NAME IN ('单证线上初审','单证线上复审')";
            String selectSqlone = " SELECT "
                                    + "    e.uuid as task_uuid, "
                                    + "    e.task_name, "
                                    + "    b.user_uuid AS task_user_uuid, " 
                                    + "    d.pay_id  , " 
                                    + "    d.uuid, " 
                                    + "    d.pay_priority, "
                                    + "    f.core_enterprise_name, "
                                    + "    i.financial_institutions_name, "
                                    + "    h.suppliers_name, "
                                    + "    j.item_company_name, "
                                    + "    z.num," 
                                    + "    z.invoice_amount ";
    
            String fromSqlone = String.format(" FROM " 
                                + "    bpm_activity a, " 
                                + "    bpm_task_user b, "
                                + "    bpm_process_instance c, "
                                + "    biz_pay_comfirm_info d, "
                                + "    biz_document_task_info e, " 
                                + "    biz_core_enterprise f, "
                                + "    biz_financial_institutions i, "
                                + "    biz_suppliers h, " 
                                + "    biz_item_company j , " 
                                + "    ( "
                                + "        SELECT "
                                + "            a.pay_id, " 
                                + "            SUM(invoice_amount) AS invoice_amount, "
                                + "            COUNT(*) AS num " 
                                + "        FROM " 
                                + "            biz_invoice_info a, "
                                + "            biz_pay_comfirm_info b "
                                + "        WHERE "
                                + "            a.pay_id = b.uuid "
                                + "            AND a.sys_status = b.sys_status = 1"
                                + "        GROUP BY " + " a.pay_id "
                                + "    ) z " 
                                + "WHERE  %s "
                                + "AND a.task_id = b.task_id " 
                                + "AND d.uuid = z.pay_id  "
                                + "AND a.instance_id = c.instance_id " 
                                + "AND c.biz_uuid = d.uuid "
                                + "AND f.uuid = d.core_enterprise_id "
                                + "AND i.uuid = d.financial_institutions_id "
                                + "AND h.uuid = d.suppliers_id "
                                + "AND j.uuid = d.item_company_id  "
                                + "AND a.ACTIVITY_NAME = e.activity_name "
                                + "AND c.process_name = e.process_name "
                                + "AND d.core_enterprise_id = e.core_enterprise_id "
                                + "AND d.financial_institutions_id = e.financial_institutions_id "
                                + "AND d.signing_body_id = e.signing_body_id "
                                + "AND A.sys_status = 1 "
                                + "AND B.sys_status = 1 "
                                + "AND C.sys_status = 1 " 
                                + "AND D.sys_status = 1 "
                                + "AND F.sys_status = 1 "
                                + "AND I.sys_status = 1 "
                                + "AND H.sys_status = 1 "
                                + "AND j.sys_status = 1 "
                                + " %s ",onlineTaskName,where1);
            // 第二种情况 单证线上审核','项目单证线下纸质审核
            String selectSqlTwo = " SELECT  "
                                + "    e.uuid as task_uuid,  "
                                + "    e.task_name,  "
                                + "    b.user_uuid AS task_user_uuid,  "
                            //    + "    k.agreement_no AS pay_id,  "
                                + "    d.pay_id  , " 
                                + "    d1.uuid,  "
                                + "    '' as pay_priority,  " 
                                + "    f.core_enterprise_name,  "
                                + "    i.financial_institutions_name,  "
                                + "    h.suppliers_name,  " 
                                + "    '' AS item_company_name,  " 
                                + "    '' AS num,  "
                                + "    '' AS invoice_amount  ";
            // 首次准入
            // a.ACTIVITY_NAME IN ('单证线上审核','项目单证线下纸质审核')
            // admittanceTaskName = "a.ACTIVITY_NAME IN ('单证线上审核','项目单证线下纸质审核')";
            String fromSqlTwo = String.format(" FROM  "
                    + "    bpm_activity a,  "
                    + "    bpm_task_user b,  "
                    + "    bpm_process_instance c,  "
                    + "    biz_first_contract d1,  "
                    + "    biz_core_enterprise f,  "
                    + "    biz_document_task_info e,  "
                    + "    biz_financial_institutions i,  "
                    + "    biz_suppliers h,  "
                //    + "    biz_framework_agreement k  "
                    +"  ( SELECT uuid , agreement_no as pay_id  FROM biz_framework_agreement WHERE  sys_status=1) as  d   "
                    + "WHERE %s "
                    + "AND a.task_id = b.task_id  "
                    + "AND a.instance_id = c.instance_id  "
                    + "AND c.biz_uuid = d1.uuid  "
                    + "AND f.uuid = d1.core_enterprise_id  "
                    + "AND i.uuid = d1.financial_institutions_id  "
                    + "AND h.uuid = d1.suppliers_id  "
                //    + "AND d1.agreement_id = k.uuid  "
                    + "AND d1.agreement_id = d.uuid  "
                    + "AND e.process_name = c.process_name  "
                    + "AND e.activity_name = a.ACTIVITY_NAME  "
                    + "AND e.core_enterprise_id = d1.core_enterprise_id  "
                    + "AND e.financial_institutions_id = d1.financial_institutions_id  "
                    + "AND e.signing_body_id = d1.signing_body_id  "
                    + "AND A.sys_status = 1  "
                    + "AND B.sys_status = 1  "
                    + "AND C.sys_status = 1  "
                    + "AND D1.sys_status = 1  "
                    + "AND F.sys_status = 1  "
                    + "AND I.sys_status = 1  "
                    + "AND H.sys_status = 1  "
                    + "AND e.sys_status = 1 "
                    + " %s ",admittanceTaskName ,where2);
            // 保理线下
            // 第三种情况 '单证线下纸质审核','项目单证线下纸质审核'
            // offlineTaskName = "a.ACTIVITY_NAME IN ('单证线下纸质审核','项目单证线下纸质审核')";
            String selectSqlThree = "SELECT   "
                                    + "    e.uuid AS task_uuid,   "
                                    + "    e.task_name,   "
                                    + "    b.user_uuid AS task_user_uuid,   "
                                    + "    d.pay_id,   "
                                    + "    d.uuid,   "
                                    + "    d.pay_priority,   "
                                    + "    f.core_enterprise_name,   "
                                    + "    i.financial_institutions_name,   "
                                    + "    h.suppliers_name,   "
                                    + "    j.item_company_name,   "
                                    + "    z.num,   "
                                    + "    z.invoice_amount  ";
            String fromSqlThree = String.format("FROM    "
                    + "    bpm_activity a,    "
                    + "    bpm_task_user b,    "
                    + "    bpm_process_instance c,    "
                    + "    biz_pay_comfirm_info d,    "
                    + "    biz_document_task_info e,    "
                    + "    biz_core_enterprise f,    "
                    + "    biz_financial_institutions i,    "
                    + "    biz_suppliers h,    "
                    + "    biz_item_company j,    "
                    + "    biz_factoring_reception k,    "
                    + "    (    " + "        SELECT    "
                    + "            a.pay_id,    "
                    + "            SUM(invoice_amount) AS invoice_amount,    "
                    + "            COUNT(*) AS num    "
                    + "        FROM    "
                    + "            biz_invoice_info a,    "
                    + "            biz_pay_comfirm_info b    "
                    + "        WHERE    "
                    + "            a.pay_id = b.uuid    "
                    + "        AND a.sys_status = b.sys_status = 1    "
                    + "        GROUP BY    "
                    + "            a.pay_id    "
                    + "    ) z    " + "WHERE %s   " +
                    /*
                     * "    a.ACTIVITY_NAME IN (    " + "        '单证线下纸质审核',    " +
                     * "        '项目单证线下纸质审核'    " + "    )    " +
                     */
                    "AND a.task_id = b.task_id    "
                    + "AND d.uuid = z.pay_id  "
                    + "AND a.instance_id = c.instance_id    "
                    + "AND c.biz_uuid = d.uuid    "
                    + "AND f.uuid = d.core_enterprise_id    "
                    + "AND i.uuid = d.financial_institutions_id    "
                    + "AND h.uuid = d.suppliers_id    "
                    + "AND j.uuid = d.item_company_id    "
                    + "AND a.ACTIVITY_NAME = e.activity_name    "
                    + "AND c.process_name = e.process_name    "
                    + "AND d.core_enterprise_id = e.core_enterprise_id    "
                    + "AND d.financial_institutions_id = e.financial_institutions_id    "
                    + "AND d.signing_body_id = e.signing_body_id    "
                    + "AND z.pay_id = d.uuid    "
                    + "AND d.uuid = k.biz_id    "
                    + "AND k.receive_no = e.auto_assign    "
                    + "AND A.sys_status = 1    "
                    + "AND B.sys_status = 1    "
                    + "AND C.sys_status = 1    "
                    + "AND D.sys_status = 1    "
                    + "AND F.sys_status = 1    "
                    + "AND I.sys_status = 1    "
                    + "AND H.sys_status = 1    "
                    + "AND j.sys_status = 1    "
                    + "AND e.sys_status = 1    "
                    + "AND k.sys_status = 1 "
                    + " %s  ",offlineTaskName, where3);
            
            String  from =" from ( " + selectSqlone + fromSqlone + "  union  " + selectSqlTwo + fromSqlTwo +"  union  " + selectSqlThree + fromSqlThree +  "  ) tt";
            
            onlineTaskPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), select,from+order , paras.toArray());
    
        /*    onlineTaskPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSqlone,
                    String.format(fromSqlone, onlineTaskName) + where + order, paras.toArray());
            offlineTaskPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSqlTwo,
                    String.format(fromSqlTwo, admittanceTaskName) + where + order, paras.toArray());
            admittanceTaskPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSqlThree,
                    String.format(fromSqlThree, offlineTaskName) + where + order, paras.toArray());
            List<Record> tempRecord = onlineTaskPage.getList();
    
            for (Record record : offlineTaskPage.getList()) {
                tempRecord.add(record);
            }
            for (Record record : admittanceTaskPage.getList()) {
                tempRecord.add(record);
            }
            onlineTaskPage.setList(tempRecord);
            int totalRow = onlineTaskPage.getList().size();
            int totalPage = totalRow / 10 + 1;
            onlineTaskPage.setTotalRow(totalRow);
            onlineTaskPage.setTotalPage(totalPage);*/
            return onlineTaskPage;
        }
    
        /**
         * 页面初始化的时候, 判断当前用户是什么角色 主管还是 单证人员
         * @param ctl
         * @return flag
         * @throws ActiveRecordException
         */
        public boolean getPermission(QhyfController ctl) throws ActiveRecordException {
            boolean flag = false;
            // 获取到当前用户的sys_user表ID
            String loginUserID = ctl.getCurrentUser().getStr(BlConstant.FIELD_USER_ID);
            // 构造查询SQL 查询当前用户的角色有那些
            String selectSql = String.format(""
                    + " SELECT a.role_name ,a.uuid "
                    + " FROM sys_role a , "
                    + " sys_user_role b , "
                    + " sys_user c ,  "
                    + " sys_business_configure_info d "
                    + " WHERE a.sys_status = 1 "
                    + " AND b.sys_status = 1 "
                    + " AND c.sys_status = 1 "
                    + " AND d.sys_status = 1 "
                    + " AND a.uuid = b.role_uuid "
                    + " AND b.user_uuid = c.uuid "
                    + " AND d.configu_date = a.uuid "
                    + "AND d.configu_type_id in('document_is_view_modify','IT_is_view_modify')   "
                    + " AND c.uuid= ? "
            );
            List<Record> record = Db.find(selectSql, loginUserID);
            if (!record.isEmpty()) {
                flag = true;
            }
            return flag;
        }
    
        /**
         * 获取单证人员信息列表
         * @param ctr
         * @throws ActiveRecordException
         */
        public Page<Record> getUserList(QhyfController ctr) throws ActiveRecordException {
            Page<Record> userPage = null;
            List<String> paras = new ArrayList<String>();
            // 获取分页信息
            PageInfo pageInfo = ctr.getPageInfo();
            AssertUtils.notNull(pageInfo, "分页信息不能为空");
            // 设置排序
            String order = ctr.getOrderString(pageInfo);
            // 查询条件
            String where = "";
            // 第一次加载的任务类型的id
            // 获取任务窗口传过来的 任务名称及其任务的id
            String taskUuid = ctr.getPara("taskUuid");
            String     isTask = "";
             if (StringUtils.notBlank(taskUuid)) {
                         isTask = " and e.uuid = ? ";
                         paras.add(taskUuid);
            }
            //获取分配人uuid
            String uuid = ctr.getPara("mainUuid");
            if(!StringUtils.isBlank(uuid)){
                where += " and a.uuid <> ? ";
                paras.add(uuid);
            }
            // 获取姓名
            String userName = ctr.getPara("userName");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(userName)) {
                where += " and a.user_name = ? ";
                paras.add(userName);
            }
            // 获取任务类型
            String taskUuids = ctr.getPara("taskId");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(taskUuids)) {
                String[] taskU = taskUuids.split(",");
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < taskU.length; i++) {
                    stringBuilder.append("'" + taskU[i] + "',");
                }
                stringBuilder.deleteCharAt(stringBuilder.length() - 1);
                isTask += " and e.uuid in ( " + stringBuilder.toString() + " ) ";
    
            }
            // 获取审核层级
            String approveRate = ctr.getPara("approveRate");
            // 不为空时添加查询条件
            if (StringUtils.notBlank(approveRate)) {
                where += " and e.uuid =  ?  ";
                paras.add(approveRate);
            }
            String selectSql = "  SELECT DISTINCT "
                    + "  (a.uuid) AS user_uuid,"
                    + "    a.user_name,    "
                    + "    a.user_id,    "
                    + "    c.online_state,    "
                    + "    e.level_name,    "
                    + "    e.uuid as euuid ,    "
                    + "    x.yiLingQuStatus,    "
                    + "    x.payPriority,    "
                    + "    x.task_name ,    "
                    + "    x.task_id ,    "
                    + "    x.uuid    ";
            String fromSql = String.format("FROM     "
                    + "    sys_user a,     "
                    + "    sys_user_role b,     "
                    + "    biz_document_user_info c,     "
                    + "    sys_role d,     "
                    + "    biz_document_level_info e,     "
                    + "    (     "
                    + "        SELECT     "
                    + "            b.user_uuid AS task_user_uuid,     "
                    + "            a. STATUS,     "
                    + "           a.task_id ,             "
                    + "            e.task_name,     "
                    + "            e.uuid,     "
                    + "            COUNT(     "
                    + "                CASE     "
                    + "                WHEN d.pay_priority = 1 THEN     "
                    + "                    '急单个数'     "
                    + "                END     " + "            ) AS payPriority,     "
                    + "            COUNT(     "
                    + "                CASE     "
                    + "                WHEN a. STATUS = '已领取' THEN     "
                    + "                    '已领取个数'     "
                    + "                END     "
                    + "            ) AS yiLingQuStatus     "
                    + "        FROM     "
                    + "            bpm_activity a,     "
                    + "            bpm_task_user b,     "
                    + "            bpm_process_instance c,     "
                    + "            biz_pay_comfirm_info d,     "
                    + "            biz_document_task_info e     "
                    + "        WHERE     "
                    + "            a.sys_status = 1     "
                    + "        AND b.sys_status = 1     "
                    + "        AND c.sys_status = 1     "
                    + "        AND d.sys_status = 1     "
                    + "        AND e.sys_status = 1     "
                    + "        AND a.task_id = b.task_id     "
                    + "        AND a.instance_id = c.instance_id     "
                    + "        AND c.biz_uuid = d.uuid     "
                    + "        AND a.ACTIVITY_NAME = e.activity_name     "
                    + "        AND c.process_name = e.process_name     "
                    + "        AND d.core_enterprise_id = e.core_enterprise_id     "
                    + "        AND d.financial_institutions_id = e.financial_institutions_id     "
                    + "        AND d.signing_body_id = e.signing_body_id     "
                    +"       %s "
                    + "        GROUP BY   "
                    + "            b.user_uuid   " + ") x     "
                    + "WHERE     "
                    + "    a.uuid = b.user_uuid     "
                    + "AND b.role_uuid = d.uuid     "
                    + "AND x.task_user_uuid = a.uuid     "
                    + "AND a.sys_status = 1     "
                    + "AND b.sys_status = 1     "
                    + "AND c.sys_status = 1     "
                    + "AND d.sys_status = 1     "
                    + "AND e.sys_status = 1     "
                    + "AND a.uuid = c.user_id     "
                    + "AND c.online_state = 1     "
                    + "AND e.uuid = c.document_level_id     "
                    + "AND b.role_uuid IN (     " + "    'qhyf1011',     "
                    + "    'qhyf1010',     " + "    'qhyf1048'     " + ")  ",isTask);
        
            userPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSql,fromSql+where + order,
                    paras.toArray());
            return userPage;
        }
    
    //    /**
    //     * 获取批量的单证人员信息列表
    //     *
    //     * @param ctr
    //     * @return
    //     * @throws ActiveRecordException
    //     */
    //    public Page<Record> getUserManyList(QhyfController ctr) throws ActiveRecordException {
    //        Page<Record> userPage = null;
    //        List<String> paras = new ArrayList<String>();
    //        // 获取分页信息
    //        PageInfo pageInfo = ctr.getPageInfo();
    //        AssertUtils.notNull(pageInfo, "分页信息不能为空");
    //        // 设置排序
    //        String order = ctr.getOrderString(pageInfo);
    //        // 查询条件
    //        String where = "";
    //        // 第一次加载的任务类型的id
    //        // 获取任务窗口传过来的 任务名称及其任务的id
    //        /*
    //         * String taskUuid = ctr.getPara("taskUuid"); if
    //         * (StringUtils.notBlank(taskUuid)) { where += " and x.uuid = ? ";
    //         * paras.add(taskUuid); }
    //         * // 获取姓名 String userName = ctr.getPara("userName"); // 不为空时添加查询条件 if
    //         * (StringUtils.notBlank(userName)) { where += " and a.user_name = ? ";
    //         * paras.add(userName); }
    //         * // 获取任务类型 String taskId = ctr.getPara("taskId"); // 不为空时添加查询条件 if
    //         * (StringUtils.notBlank(taskId)) { where += " and x.uuid = ? ";
    //         * paras.add(taskId); }
    //         * // 获取审核层级 String approveRate = ctr.getPara("approveRate"); //
    //         * 不为空时添加查询条件 if (StringUtils.notBlank(approveRate)) { where +=
    //         * " and e.uuid =  ?  "; paras.add(approveRate); }
    //         */
    //        //获取分配人uuid
    //        String uuid = ctr.getPara("mainUuid");
    //        if(!StringUtils.isBlank(uuid)){
    //            where += " and a.uuid <> ? ";
    //            paras.add(uuid);
    //        }
    //        // 获取任务类型的uuid
    //        String taskUuids = ctr.getPara("taskUuids"); // 获取的数组
    //         String isTakes ="";
    //        // 不为空时添加查询条件
    //        if (StringUtils.notBlank(taskUuids)) {
    //            String[] taskU = taskUuids.split(",");
    //            StringBuilder stringBuilder = new StringBuilder();
    //            for (int i = 0; i < taskU.length; i++) {
    //                stringBuilder.append("'" + taskU[i] + "',");
    //            }
    //            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
    //            //where += " and x.uuid in ( " + stringBuilder.toString() + " ) ";
    //            isTakes += " and e.uuid in ( " + stringBuilder.toString() + " ) ";
    //
    //        }
    //        String selectSql = "  SELECT DISTINCT    " +
    //                "    a.uuid AS user_uuid,    " +
    //                "    a.user_name,    "
    //                + "    a.user_id,    "
    //                + "    c.online_state,    "
    //                + "    e.level_name,    "
    //                + "    e.uuid as euuid ,    "
    //                + "    x.yiLingQuStatus,    "
    //                + "    x.payPriority,    "
    //                + "    x.task_name,    "
    //                + "   x.task_id   ,  "
    //                + "    x.uuid    ";
    //        String fromSql =String.format( "FROM     "
    //                + "    sys_user a,     "
    //                + "    sys_user_role b,     "
    //                + "    biz_document_user_info c,     "
    //                + "    sys_role d,     "
    //                + "    biz_document_level_info e,     "
    //                + "    (     " + "        SELECT     "
    //                + "            b.user_uuid AS task_user_uuid,     "
    //                + "            a. STATUS,     "
    //                + "           a.task_id ,   "
    //                + "            e.task_name,     "
    //                + "            e.uuid,     "
    //                + "            COUNT(     "
    //                + "                CASE     "
    //                + "                WHEN d.pay_priority = 1 THEN     "
    //                + "                    '急单个数'     "
    //                + "                END     "
    //                + "            ) AS payPriority,     "
    //                + "            COUNT(     "
    //                + "                CASE     "
    //                + "                WHEN a. STATUS = '已领取' THEN     "
    //                + "                    '已领取个数'     "
    //                + "                END     "
    //                + "            ) AS yiLingQuStatus     "
    //                + "        FROM     "
    //                + "            bpm_activity a,     "
    //                + "            bpm_task_user b,     "
    //                + "            bpm_process_instance c,     "
    //                + "            biz_pay_comfirm_info d,     "
    //                + "            biz_document_task_info e     "
    //                + "        WHERE     "
    //                + "            a.sys_status = 1     "
    //                + "        AND b.sys_status = 1     "
    //                + "        AND c.sys_status = 1     "
    //                + "        AND d.sys_status = 1     "
    //                + "        AND e.sys_status = 1     "
    //                + "        AND a.task_id = b.task_id     "
    //                + "        AND a.instance_id = c.instance_id     "
    //                + "        AND c.biz_uuid = d.uuid     "
    //                + "        AND a.ACTIVITY_NAME = e.activity_name     "
    //                + "        AND c.process_name = e.process_name     "
    //                + "        AND d.core_enterprise_id = e.core_enterprise_id     "
    //                + "        AND d.financial_institutions_id = e.financial_institutions_id     "
    //                + "        AND d.signing_body_id = e.signing_body_id     "
    //                +"       %s      "
    //                + "        GROUP BY     "
    //                + "            b.user_uuid     "
    //                + "    ) x     " + "WHERE     "
    //                + "    a.uuid = b.user_uuid     "
    //                + "AND b.role_uuid = d.uuid     "
    //                + "AND x.task_user_uuid = a.uuid     "
    //                + "AND a.sys_status = 1     "
    //                + "AND b.sys_status = 1     "
    //                + "AND c.sys_status = 1     "
    //                + "AND d.sys_status = 1     "
    //                + "AND e.sys_status = 1     "
    //                + "AND a.uuid = c.user_id     "
    //                + "AND c.online_state = 1     "
    //                + "AND e.uuid = c.document_level_id     "
    //                + "AND b.role_uuid IN (     "
    //                + "    'qhyf1011',     "
    //                + "    'qhyf1010',     "
    //                + "    'qhyf1048'     " + ")  ",isTakes);
    //        userPage = Db.paginate(pageInfo.getPageIndex(), pageInfo.getPageSize(), selectSql, fromSql + where + order,
    //                paras.toArray());
    //        return userPage;
    //    }
    
        /**
         * 加载任务类型的下拉列表
         * @param ctr
         * @return 任务类型
         * @throws ActiveRecordException
         */
        public List<Record> initSelect(QhyfController ctr) throws ActiveRecordException {
            // 创建结果集
            List<Record> taskNameList = null;
            String sql = "SELECT uuid as fuuid ,task_name  FROM  biz_document_task_info   WHERE  sys_status= 1 ";
            taskNameList = Db.find(sql);
            return taskNameList;
        }
    
        /**
         * 加载审核层级下拉列表
         * @param ctr
         * @return 审核层级
         * @throws ActiveRecordException
         */
        public List<Record> getApproveRate(QhyfController ctr) throws ActiveRecordException {
            // 创建结果集
            List<Record> approveList = null;
            String sql = "SELECT UUID,level_name FROM biz_document_level_info ";
            approveList = Db.find(sql);
            return approveList;
        }
    
    //    /**
    //     * 确认分配处理
    //     *
    //     * @param ctr
    //     * @throws ActiveRecordException
    //     * @throws CordysException
    //     */
        public boolean comfirDistribute12(QhyfController ctr) throws ActiveRecordException, CordysException {
            // 取得数据 :为json字符串
            String temp = ctr.getPara("documentUsers");
            List<JSONObject> list = JSON.parseArray(temp, JSONObject.class); // 把获取的转化成对象
            String uuid = "";
            String userUuid = "";
            String userName = "";
            String taskId = "";
            // 把任务调配给谁的id
            String userId = "";
            //获取付款确认书的uuid
            String  payUuid="";
            //主界面人的userID
            String mainUserId ="" ;
            for (JSONObject jsonObject : list) { // 遍历
                // 获取前端的任务的uuid,用戶的uuid,姓名 ,任务的taskId
                uuid += (StringUtils.notBlank(uuid) ? "," : "") + jsonObject.getString("uuid");
                userUuid += (StringUtils.notBlank(userUuid) ? "," : "") + jsonObject.getString("userUuid");
                userName += (StringUtils.notBlank(userName) ? "," : "") + jsonObject.getString("userName");
                taskId += (StringUtils.notBlank(taskId) ? "," : "") + jsonObject.getString("taskId");
                userId += (StringUtils.notBlank(userId) ? "," : "") + jsonObject.getString("userId");
                mainUserId= jsonObject.getString("mainUserId");
                payUuid=jsonObject.getString("payUuid");
                this.setCordysUser(userId);
                this.setCordysUser(mainUserId);
            }
            // 获取到当前用户的sys_user表ID
            String loginUserID = ctr.getCurrentUser().getStr(BlConstant.FIELD_USER_ID);
            String sql = "select user_id from sys_user where sys_status = 1 and uuid = ?";
            String loginUserId = Db.queryStr(sql,loginUserID);
        //    AssertUtils.notNull(userName, "数据库未存在此人信息");
           //根据付款确认书的uuid查出流程信息表的流程id
            String processSql="SELECT instance_id FROM bpm_process_instance WHERE sys_status = 1 and biz_uuid= ?";
            String processId = Db.queryStr(processSql,payUuid);
            //根据流程的id 查出 流程最新活动表 里面的taskid
            String  farOutTaskidSql="SELECT task_id FROM bpm_last_activity WHERE sys_status = 1 and  instance_id= ? ";
            String  farOutTaskid = Db.queryStr(farOutTaskidSql, processId);
            //"afeb63df-b665-11e8-f4cf-cfd3455a169b"
            // 判断分配任务是否成功 pengzhiwei   fuliulin
            boolean  isOkTask=PerformTaskApi.delegateTask(loginUserId,userId, farOutTaskid, "", true);
            //创建最新流程表的实力
            BpmLastActivity bpmLastActivity=new  BpmLastActivity();
            boolean isOk=false;
            //根据userId查出他的userName,设置到表bpm_last_activity里面
            String  sysUserNameSql="SELECT user_name from sys_user WHERE sys_status = 1  and  user_id = ?";
            String   sysUserName=Db.queryStr(sysUserNameSql,userId);
            if (isOkTask==true) {
            // 更新表bpm_last_activity 里面的username
                bpmLastActivity.set("instanceId",processId );
                bpmLastActivity.set("taskId",farOutTaskid );
                bpmLastActivity.set("userName",sysUserName );
                isOk=ctr.merge(BpmLastActivity.dao.getTable().getName(), bpmLastActivity);
            }
            return isOk;
        }
    
        /**
         * 确认分配处理
         * @param ctr
         * @throws ActiveRecordException
         * @throws CordysException
         */
        public boolean comfirDistribute(QhyfController ctr) throws ActiveRecordException, CordysException {
            // 取得数据 :为json字符串
            String temp = ctr.getPara("documentUsers");
            List<JSONObject> list = JSON.parseArray(temp, JSONObject.class); // 把获取的转化成对象
    
            String uuid = "";
            String userUuid = "";
            String userName = "";
            String taskId = "";
            // 把任务调配给谁的id
            String userId = "";
            //获取付款确认书的uuid
            String  payUuid="";
            //主界面人的userID
            String mainUserId ="" ;
            for (JSONObject jsonObject : list) { // 遍历
                // 获取前端的任务的uuid,用戶的uuid,姓名 ,任务的taskId
                uuid += (StringUtils.notBlank(uuid) ? "," : "") + jsonObject.getString("uuid");
                userUuid += (StringUtils.notBlank(userUuid) ? "," : "") + jsonObject.getString("userUuid");
                userName += (StringUtils.notBlank(userName) ? "," : "") + jsonObject.getString("userName");
                taskId += (StringUtils.notBlank(taskId) ? "," : "") + jsonObject.getString("taskId");
                userId += (StringUtils.notBlank(userId) ? "," : "") + jsonObject.getString("userId");
                mainUserId= jsonObject.getString("mainUserId");
                // 在待完成信息列表里面传了多个付款确认书的uuid过来
                payUuid +=  (StringUtils.notBlank(payUuid) ? "," : "") +jsonObject.getString("payUuid");  // 这里已经是个数组
                this.setCordysUser(userId);
                this.setCordysUser(mainUserId);
            }
            
            // 获取到当前用户的sys_user表ID
            String loginUserID = ctr.getCurrentUser().getStr(BlConstant.FIELD_USER_ID);
            String sql = "select user_id from sys_user where sys_status = 1 and uuid = ?";
            
            String loginUserId = Db.queryStr(sql,loginUserID);
    //        AssertUtils.notNull(userName, "数据库未存在此人信息");
            
            boolean isOk=false;
            String[] payUuids=payUuid.split(",");
            for (int i = 0; i < payUuids.length; i++) {
                //根据付款确认书的uuid查出流程信息表的流程id     (id为数组)
                String processSql="SELECT instance_id FROM bpm_process_instance WHERE sys_status = 1 and biz_uuid= ?";
                String processId = Db.queryStr(processSql,payUuids[i]);
                //根据流程的id 查出 流程最新活动表 里面的taskid 
                String  farOutTaskidSql = "SELECT task_id FROM bpm_last_activity WHERE sys_status = 1 and  instance_id= ? ";
                Record record = Db.findFirst(farOutTaskidSql,processId);
                boolean  isOkTask=PerformTaskApi.delegateTask(loginUserId,userId , record.getStr("taskId"), "", true);
    
                String[]  userIds=userId.split(",");
                for (int j = 0; j < userIds.length; j++) {
                    String  sysUserNameSql="SELECT user_name from sys_user WHERE sys_status = 1  and  user_id = ?";
                    String   sysUserName=Db.queryStr(sysUserNameSql,userIds[j]);
                    //创建最新流程表的对象
                    BpmLastActivity bpmLastActivity=new  BpmLastActivity();
                    if (isOkTask) {
                            //根据userId查出他的userName,设置到表bpm_last_activity里面
                            // 更新表bpm_last_activity 里面的username
                            bpmLastActivity.set("instanceId",processId );
                            bpmLastActivity.set("taskId",record.getStr("taskId") );
                            bpmLastActivity.set("userName",sysUserName );
                            isOk=ctr.merge(BpmLastActivity.dao.getTable().getName(), bpmLastActivity);
                        }
                }
            }
            return isOk;
        }
    
    
        /**
         * 前台参数转义处理方法
         * @param str
         *             String类型的前台参数
         * @return String
         */
        private String strToEscape(String str){
            //转义百分号
            if (str.contains("%")) {
                str = str.replace("%", "\%");
            }
            //转义下划线
            if (str.contains("_")) {
                str = str.replace("_", "\_");
            }
            //trim处理
            str = str.trim();
            //返回处理结果
            return str;
        }
    
    }
  • 相关阅读:
    136-如何访问redis数据库
    135-如何实现result风格
    134-SpringMVC中的值,会有一个默认值
    133-this知识点
    132-SpringBoot中的请求方法
    034-405是什么错误?
    131-逆向工程配置文件
    SQL---实验一
    《将博客搬至CSDN》
    正则表达式1---QQ号合法性判断
  • 原文地址:https://www.cnblogs.com/xiaoniuniu886/p/10429613.html
Copyright © 2011-2022 走看看