586 lines
22 KiB
Java
586 lines
22 KiB
Java
package quartz;
|
||
|
||
import java.util.Arrays;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
import java.util.UUID;
|
||
|
||
import jbo.com.tenwa.lease.comm.DAY_DISTRIBUTE;
|
||
import jbo.com.tenwa.lease.comm.VI_AUTODISTRIBUTE;
|
||
import jbo.sys.OVERDUE_DUNNING_INFO;
|
||
|
||
import org.quartz.Job;
|
||
import org.quartz.JobExecutionContext;
|
||
import org.quartz.JobExecutionException;
|
||
|
||
import com.amarsoft.are.jbo.BizObject;
|
||
import com.amarsoft.are.jbo.BizObjectManager;
|
||
import com.amarsoft.are.jbo.JBOException;
|
||
import com.amarsoft.are.jbo.JBOFactory;
|
||
import com.amarsoft.are.jbo.JBOTransaction;
|
||
import com.amarsoft.are.util.StringFunction;
|
||
import com.base.util.QuartzUtil;
|
||
//import com.tenwa.action.channelportal.ContractSignAction;
|
||
//import com.tenwa.action.channelportal.comm.ContractTransferRightForEnd;
|
||
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
|
||
import com.tenwa.lease.app.quartzmession.JobInitUserName;
|
||
|
||
public class AutoDistribute implements Job {
|
||
private JobInitUserName jboName;
|
||
//指定的北财催款员id(正式环境需要修改)
|
||
private String beicaiUserID = "8006U00000019";
|
||
|
||
//北财合作方角色 800R00000044
|
||
private String beicaiRoleId = "800R00000044";
|
||
|
||
//指定的凯捷催款员id(正式环境需要修改)
|
||
private String kjUserID = "8006U00000017";
|
||
|
||
//凯捷合作方角色
|
||
private String kjRoleId = "800R00000048";
|
||
|
||
|
||
@Override
|
||
public void execute(JobExecutionContext arg0) throws JobExecutionException {
|
||
String startime = StringFunction.getTodayNow();
|
||
|
||
Object userId = arg0.getTrigger().getJobDataMap().get("CurUserId");
|
||
String curUserId = userId == null ? "system" : userId.toString();
|
||
JBOTransaction tx = null;
|
||
try {
|
||
tx = JBOFactory.createJBOTransaction();
|
||
//给非北财分配催款员
|
||
ownershipTransferSign(tx, arg0);
|
||
//北财逾期的合同分配给指定催款员
|
||
distributeBeicai(tx, arg0);
|
||
//凯捷逾期的合同分配给指定催款员
|
||
distributekaijie(tx, arg0);
|
||
tx.commit();
|
||
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "success","成功", curUserId);
|
||
} catch (Exception e) {
|
||
try {
|
||
tx.rollback();
|
||
} catch (JBOException e1) {
|
||
// TODO Auto-generated catch block
|
||
e1.printStackTrace();
|
||
}
|
||
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "error","失败", curUserId);
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 北财逾期的合同分配给指定催款员
|
||
* @param tx
|
||
* @param arg0
|
||
* @throws JBOException
|
||
*/
|
||
public void distributeBeicai(JBOTransaction tx, JobExecutionContext arg0) throws JBOException {
|
||
|
||
// 获取所有逾期的需要催收的合同信息
|
||
BizObjectManager bom;
|
||
BizObjectManager overdueManager;
|
||
|
||
overdueManager = JBOFactory.getBizObjectManager(OVERDUE_DUNNING_INFO.CLASS_NAME, tx);
|
||
bom = JBOFactory.getBizObjectManager(VI_AUTODISTRIBUTE.CLASS_NAME, tx);
|
||
@SuppressWarnings("unchecked")
|
||
List<BizObject> boList = bom.createQuery("SELECT O.id,O.over_days FROM O WHERE O.project_manage IN (SELECT ur.userid FROM jbo.awe.USER_ROLE ur WHERE ur.roleid ='"+beicaiRoleId+"')").getResultList(false);
|
||
for (BizObject bo : boList) {
|
||
String contractId = bo.getAttribute("id").toString();
|
||
|
||
//查询是否已经有催款员(目前北财只有一个指定的催款员)
|
||
BizObject overdue = overdueManager.createQuery("contract_id=:contract_id").setParameter("contract_id", contractId).getSingleResult(false);
|
||
if(overdue == null){
|
||
BizObject overdueBizObject = overdueManager.newObject();
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
|
||
overdueBizObject.setAttributeValue("id", uuid);
|
||
overdueBizObject.setAttributeValue("part_dept", beicaiUserID);
|
||
overdueBizObject.setAttributeValue("contract_id", contractId);
|
||
overdueManager.saveObject(overdueBizObject);
|
||
}else{
|
||
overdueManager.createQuery("update O set part_dept=:part_dept where contract_id=:contract_id")
|
||
.setParameter("contract_id", contractId)
|
||
.setParameter("part_dept", beicaiUserID).executeUpdate();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 凯捷逾期的合同分配给指定催款员
|
||
* @param tx
|
||
* @param arg0
|
||
* @throws JBOException
|
||
*/
|
||
public void distributekaijie(JBOTransaction tx, JobExecutionContext arg0) throws JBOException {
|
||
|
||
// 获取所有逾期的需要催收的合同信息
|
||
BizObjectManager bom;
|
||
BizObjectManager overdueManager;
|
||
|
||
overdueManager = JBOFactory.getBizObjectManager(OVERDUE_DUNNING_INFO.CLASS_NAME, tx);
|
||
bom = JBOFactory.getBizObjectManager(VI_AUTODISTRIBUTE.CLASS_NAME, tx);
|
||
@SuppressWarnings("unchecked")
|
||
List<BizObject> boList = bom.createQuery("SELECT O.id,O.over_days FROM O WHERE O.project_manage IN (SELECT ur.userid FROM jbo.awe.USER_ROLE ur WHERE ur.roleid ='"+kjRoleId+"')").getResultList(false);
|
||
for (BizObject bo : boList) {
|
||
String contractId = bo.getAttribute("id").toString();
|
||
|
||
//查询是否已经有催款员(目前北财只有一个指定的催款员)
|
||
BizObject overdue = overdueManager.createQuery("contract_id=:contract_id").setParameter("contract_id", contractId).getSingleResult(false);
|
||
if(overdue == null){
|
||
BizObject overdueBizObject = overdueManager.newObject();
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
|
||
overdueBizObject.setAttributeValue("id", uuid);
|
||
overdueBizObject.setAttributeValue("part_dept", kjUserID);
|
||
overdueBizObject.setAttributeValue("contract_id", contractId);
|
||
overdueManager.saveObject(overdueBizObject);
|
||
}else{
|
||
overdueManager.createQuery("update O set part_dept=:part_dept where contract_id=:contract_id")
|
||
.setParameter("contract_id", contractId)
|
||
.setParameter("part_dept", beicaiUserID).executeUpdate();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 给非北财分配催款员
|
||
* @param tx
|
||
* @param arg0
|
||
* @throws Exception
|
||
*/
|
||
public void ownershipTransferSign(JBOTransaction tx,JobExecutionContext arg0) throws Exception{
|
||
//获取天数
|
||
Map<String,Integer> dayMap = getDay(tx);
|
||
int beginDay1 = dayMap.get("beginDay1");
|
||
int endDay1 = dayMap.get("endDay1");
|
||
int beginDay2 = dayMap.get("beginDay2");
|
||
int endDay2 = dayMap.get("endDay2");
|
||
int beginDay3 = dayMap.get("beginDay3");
|
||
|
||
//获取催款员角色下的用户
|
||
Map<String,String[]> userMap = getUser(tx);
|
||
String[] A = userMap.get("A");//轻催租
|
||
String[] B = userMap.get("B");//中催组
|
||
String[] C = userMap.get("C");//重催组
|
||
|
||
BizObjectManager overdueManager = JBOFactory.getBizObjectManager(OVERDUE_DUNNING_INFO.CLASS_NAME, tx);
|
||
|
||
//获取所有逾期的需要催收的合同信息
|
||
String conInfo1 = getContractId(tx);
|
||
if(!(conInfo1 == null || conInfo1.length() <= 0)){
|
||
String[] conInfos = conInfo1.split(",");
|
||
for(String conInfo:conInfos){
|
||
String contract_id = conInfo.split("@")[0];//合同id
|
||
String overDays = conInfo.split("@")[1];//逾期天数
|
||
int overDay = Integer.valueOf(overDays);
|
||
//根据合同id查询表中数据,有则修改,无则新增
|
||
BizObject overdue = overdueManager.createQuery("contract_id=:contract_id").setParameter("contract_id", contract_id).getSingleResult(false);
|
||
if(overdue!=null){//修改
|
||
//催款员
|
||
String partDept = overdue.getAttribute("part_dept").toString();
|
||
|
||
if(overDay>=beginDay2 && overDay<=endDay2){
|
||
if(Arrays.asList(B).contains(partDept)){
|
||
//此催款员是中催组的人员,不做任何操作
|
||
}else{//此催款员不是中催组的人员,则修改为中催组的人员
|
||
String person = getBPerson(tx);
|
||
updatePartDept(overdueManager, contract_id, person);
|
||
}
|
||
}else if(overDay>=beginDay3){
|
||
if(Arrays.asList(C).contains(partDept)){
|
||
//此催款员是重催组的人员,不做任何操作
|
||
}else{
|
||
//此催款员不是重催组的人员,则修改为重催组的人员
|
||
String person = getCPerson(tx);
|
||
updatePartDept(overdueManager, contract_id, person);
|
||
}
|
||
}else if(overDay>=beginDay1 && overDay<=endDay1){
|
||
if(Arrays.asList(A).contains(partDept)){
|
||
//此催款员是轻催组的人员,不做任何操作
|
||
}else{
|
||
//此催款员不是中催组的人员,则修改为轻催组的人员
|
||
String person = getAPerson(tx);
|
||
updatePartDept(overdueManager, contract_id, person);
|
||
}//此催款员不是中催组的人员,则修改为轻催组的人员
|
||
}
|
||
}else{//新增
|
||
|
||
if(overDay>=beginDay1 && overDay<=endDay1){
|
||
String person = getAPerson(tx);
|
||
savePartDept(overdueManager, contract_id,person);
|
||
}else if(overDay>=beginDay2 && overDay<=endDay2){
|
||
String person = getBPerson(tx);
|
||
savePartDept(overdueManager, contract_id ,person);
|
||
}else if(overDay>=beginDay3){
|
||
String person = getCPerson(tx);
|
||
savePartDept(overdueManager, contract_id, person);
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 修改方法
|
||
* @param overdueManager
|
||
* @param contract_id
|
||
* @param person
|
||
* @throws JBOException
|
||
*/
|
||
private void updatePartDept(BizObjectManager overdueManager, String contract_id,
|
||
String person) throws JBOException {
|
||
overdueManager.createQuery("UPDATE O SET O.part_dept='"+person+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
|
||
}
|
||
/**
|
||
* 保存方法
|
||
* @param overdueManager
|
||
* @param contract_id
|
||
* @param overdueBizObject
|
||
* @param person
|
||
* @throws JBOException
|
||
*/
|
||
private void savePartDept(BizObjectManager overdueManager, String contract_id, String person)
|
||
throws JBOException {
|
||
BizObject overdueBizObject = overdueManager.newObject();
|
||
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||
|
||
overdueBizObject.setAttributeValue("id", uuid);
|
||
overdueBizObject.setAttributeValue("part_dept", person);
|
||
overdueBizObject.setAttributeValue("contract_id", contract_id);
|
||
overdueManager.saveObject(overdueBizObject);
|
||
}
|
||
|
||
/**
|
||
* 获取催款员的天数配置
|
||
* @param tx
|
||
* @return
|
||
* @throws JBOException
|
||
*/
|
||
public Map<String, Integer> getDay(JBOTransaction tx) throws JBOException {
|
||
Map<String, Integer> map = new HashMap<String, Integer>();
|
||
int beginDay1 = 0;
|
||
int endDay1 = 0;
|
||
int beginDay2 = 0;
|
||
int endDay2 = 0;
|
||
int beginDay3 = 0;
|
||
|
||
// 获取天数
|
||
@SuppressWarnings("unchecked")
|
||
List<BizObject> dayDistribute = JBOFactory.createBizObjectQuery(DAY_DISTRIBUTE.CLASS_NAME, "select * from O").getResultList(false);
|
||
for (BizObject bizObject : dayDistribute) {
|
||
String role = bizObject.getAttribute("role").toString();
|
||
int beginDay = bizObject.getAttribute("begin_day").getInt();
|
||
int endDay = bizObject.getAttribute("end_day") == null ? 0 : bizObject.getAttribute("end_day").getInt();
|
||
if ("轻催组".equals(role)) {
|
||
beginDay1 = beginDay;
|
||
endDay1 = endDay;
|
||
} else if ("中催组".equals(role)) {
|
||
beginDay2 = beginDay;
|
||
endDay2 = endDay;
|
||
} else {
|
||
beginDay3 = beginDay;
|
||
}
|
||
}
|
||
map.put("beginDay1", beginDay1);
|
||
map.put("endDay1", endDay1);
|
||
map.put("beginDay2", beginDay2);
|
||
map.put("endDay2", endDay2);
|
||
map.put("beginDay3", beginDay3);
|
||
return map;
|
||
}
|
||
/**
|
||
* 获取催款员角色下的用户
|
||
* @param tx
|
||
* @return
|
||
*/
|
||
public Map<String,String[]> getUser(JBOTransaction tx){
|
||
|
||
Map<String,String[]> usermap = new HashMap<String, String[]>();
|
||
try {
|
||
//轻催组下的用户
|
||
String Sql1="SELECT ur.roleid,O.userid AS userid,O.loginid,O.username FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid WHERE O.status='1' AND ur.roleid='800R00000041'";
|
||
|
||
List<Map<String, String>>dataListA = DataOperatorUtil.getDataBySql(tx, Sql1, null);
|
||
String userA = new String();
|
||
for (Map<String, String> map : dataListA) {
|
||
String userid = map.get("userid");
|
||
userA += userid+"@";
|
||
}
|
||
String[] A =null;
|
||
A = userA.split("@");
|
||
usermap.put("A", A);
|
||
//中催组下的用户
|
||
String Sql2="SELECT ur.roleid,O.userid AS userid,O.loginid,O.username FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid WHERE O.status='1' AND ur.roleid='800R00000042'";
|
||
List<Map<String, String>> dataListB = DataOperatorUtil.getDataBySql(tx, Sql2, null);
|
||
String userB = new String();
|
||
for (Map<String, String> map : dataListB) {
|
||
String userid = map.get("userid");
|
||
userB += userid+"@";
|
||
}
|
||
String[] B =null;
|
||
B = userB.split("@");
|
||
usermap.put("B", B);
|
||
//重催组下的用户
|
||
String Sql3="SELECT ur.roleid,O.userid,O.loginid,O.username FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid WHERE O.status='1' AND ur.roleid='800R00000043'";
|
||
List<Map<String, String>> dataListC = DataOperatorUtil.getDataBySql(tx, Sql3, null);
|
||
String userC = new String();
|
||
for (Map<String, String> map : dataListC) {
|
||
String userid = map.get("userid");
|
||
userC += userid+"@";
|
||
}
|
||
String[] C =null;
|
||
C = userC.split("@");
|
||
usermap.put("C", C);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return usermap;
|
||
}
|
||
|
||
/**
|
||
* 获取所有逾期的需要催收的合同信息
|
||
*
|
||
* @param tx
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public String getContractId(JBOTransaction tx) throws Exception {
|
||
/*
|
||
* BizObjectManager
|
||
* bom=JBOFactory.getBizObjectManager(LB_CONTRACT_INFO.CLASS_NAME,tx);
|
||
* List<BizObject> boList = bom.createQuery(
|
||
* "SELECT O.id,vo.over_days FROM O LEFT JOIN jbo.com.tenwa.lease.comm.LB_UNION_LESSEE lul ON lul.contract_id = O.id LEFT JOIN jbo.sys.OVERDUE_DUNNING_INFO odi ON odi.contract_id = O.id LEFT JOIN jbo.sys.USER_INFO ui ON ui.userid = odi.part_dept LEFT JOIN jbo.app.tenwa.calc.VI_OVERDUE_RENT_PLAN_SUM vo ON vo.contract_id=O.id WHERE lul.is_main='Y' AND O.contract_status='31' AND vo.over_money>0"
|
||
* ).getResultList(true);
|
||
*/
|
||
// 获取所有逾期的需要催收的合同信息(非北财合同)
|
||
BizObjectManager bom = JBOFactory.getBizObjectManager(VI_AUTODISTRIBUTE.CLASS_NAME, tx);
|
||
@SuppressWarnings("unchecked")
|
||
List<BizObject> boList = bom.createQuery("SELECT O.id,O.over_days FROM O WHERE O.project_manage NOT IN (SELECT ur.userid FROM jbo.awe.USER_ROLE ur WHERE ur.roleid ='800R00000044')").getResultList(true);
|
||
|
||
String conInfos = new String();
|
||
for (BizObject bo : boList) {
|
||
conInfos += bo.getAttribute("id") + "@";
|
||
conInfos += bo.getAttribute("over_days") + ",";
|
||
}
|
||
return conInfos;
|
||
}
|
||
/**
|
||
* 获取中催组的人员
|
||
* @param tx
|
||
* @return
|
||
*/
|
||
public String getBPerson(JBOTransaction tx){
|
||
String person = "";
|
||
try {
|
||
//中催组下未分配且上岗的催款员
|
||
String sqlN = "SELECT MAX(O.userid) AS userid"
|
||
+" FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID"
|
||
+" LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid"
|
||
+ " WHERE O.status='1' AND uti.induction_state='induction_state01' AND ur.roleid='800R00000042'"
|
||
+ " AND O.userid NOT IN "
|
||
+ " (SELECT part_dept FROM OVERDUE_DUNNING_INFO)";
|
||
//虽然只让查出一条数据
|
||
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(tx, sqlN, null);
|
||
//此时中催组的所有人员都已分配,选出目前任务最少的人,且上岗
|
||
String sqlY = "SELECT MAX(o.part_dept) AS userid FROM "
|
||
+ "(SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=o.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000042' AND "+
|
||
" o.number IN (SELECT MIN(t.number) FROM"+
|
||
" (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=t.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000042' AND ui.status='1' AND uti.induction_state='induction_state01')";
|
||
|
||
//虽然只能查出一条数据
|
||
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(tx, sqlY, null);
|
||
|
||
|
||
if(dataListAN.size()>0){
|
||
String useridAN = new String();
|
||
for (Map<String, String> map : dataListAN) {
|
||
String userid = map.get("userid");
|
||
useridAN += userid+"@";
|
||
}
|
||
String[] AN =null;
|
||
AN = useridAN.split("@");
|
||
person = AN[0];
|
||
|
||
if(person==null || "".equals(person) || "null".equals(person)){
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
}else{
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return person;
|
||
}
|
||
/**
|
||
* 获取重催组下的人员
|
||
* @param tx
|
||
* @return
|
||
*/
|
||
public String getCPerson(JBOTransaction tx){
|
||
|
||
String person = "";
|
||
try {
|
||
//重催组下未分配的用户,且上岗
|
||
String sqlN = "SELECT MAX(O.userid) AS userid"
|
||
+" FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID"
|
||
+" LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid"
|
||
+ " WHERE O.status='1' AND uti.induction_state='induction_state01' AND ur.roleid='800R00000043'"
|
||
+ " AND O.userid NOT IN "
|
||
+ " (SELECT part_dept FROM OVERDUE_DUNNING_INFO)";
|
||
//虽然只让查出一条数据
|
||
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(tx, sqlN, null);
|
||
//此时重催组的所有人员都已分配,选出目前任务最少的人,且上岗
|
||
String sqlY = "SELECT MAX(o.part_dept) AS userid FROM "
|
||
+ "(SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=o.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000043' AND "+
|
||
" o.number IN (SELECT MIN(t.number) FROM"+
|
||
" (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=t.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000043' AND ui.status='1' AND uti.induction_state='induction_state01')";
|
||
|
||
//虽然只能查出一条数据
|
||
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(tx, sqlY, null);
|
||
|
||
|
||
if(dataListAN.size()>0){
|
||
String useridAN = new String();
|
||
for (Map<String, String> map : dataListAN) {
|
||
String userid = map.get("userid");
|
||
useridAN += userid+"@";
|
||
}
|
||
String[] AN =null;
|
||
AN = useridAN.split("@");
|
||
person = AN[0];
|
||
|
||
if(person==null || "".equals(person) || "null".equals(person)){
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
}else{
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return person;
|
||
}
|
||
/**
|
||
* 获取轻催组人员
|
||
* @return
|
||
*/
|
||
public String getAPerson(JBOTransaction tx){
|
||
String person = "";
|
||
try {
|
||
//轻催组下未分配且上岗的催款员
|
||
String sqlN = "SELECT MAX(O.userid) AS userid"
|
||
+" FROM USER_INFO O LEFT JOIN USER_ROLE AS ur ON ur.USERID = O.USERID"
|
||
+" LEFT JOIN USER_TASK_INFO uti ON uti.userid=O.userid AND uti.roleid=ur.roleid"
|
||
+" WHERE O.status='1' AND uti.induction_state='induction_state01' AND ur.roleid='800R00000041'"
|
||
+" AND O.userid NOT IN"
|
||
+ " (SELECT part_dept FROM OVERDUE_DUNNING_INFO)";
|
||
//虽然只让查出一条数据
|
||
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(tx, sqlN, null);
|
||
//此时轻催组的所有人员都已分配,选出目前任务最少的人,且上岗
|
||
String sqlY = "SELECT MAX(o.part_dept) AS userid FROM "
|
||
+ "(SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=o.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000041' AND "+
|
||
" o.number IN (SELECT MIN(t.number) FROM"+
|
||
" (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t"+
|
||
" LEFT JOIN USER_INFO ui ON ui.userid=t.part_dept"+
|
||
" LEFT JOIN USER_ROLE AS ur ON ur.USERID = ui.USERID"+
|
||
" LEFT JOIN USER_TASK_INFO uti ON uti.userid=ui.userid AND uti.roleid=ur.roleid"+
|
||
" WHERE uti.roleid='800R00000041' AND ui.status='1' AND uti.induction_state='induction_state01')";
|
||
|
||
//虽然只能查出一条数据
|
||
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(tx, sqlY, null);;
|
||
|
||
if(dataListAN.size()>0){
|
||
String useridAN = new String();
|
||
for (Map<String, String> map : dataListAN) {
|
||
String userid = map.get("userid");
|
||
useridAN += userid+"@";
|
||
}
|
||
String[] AN =null;
|
||
AN = useridAN.split("@");
|
||
person = AN[0];
|
||
if(person==null || "".equals(person) || "null".equals(person)){
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
}else{
|
||
String useridAY = new String();
|
||
for (Map<String, String> map : dataListAY) {
|
||
String userid = map.get("userid");
|
||
useridAY += userid+"@";
|
||
}
|
||
String[] AY =null;
|
||
AY = useridAY.split("@");
|
||
person = AY[0];
|
||
}
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
|
||
return person;
|
||
}
|
||
}
|