自动分派

This commit is contained in:
liuzhao 2018-10-18 19:51:04 +08:00
parent ba60d0b858
commit c42909e38a
2 changed files with 396 additions and 295 deletions

View File

@ -16,7 +16,7 @@
String sButtons[][] = {
//{"true","All","Button","新增","新增","newRecord()","","","","btn_icon_add",""},
//{"true","","Button","详情","详情","viewAndEdit()","","","","btn_icon_detail",""},
{"true","All","Button","保存","保存所有修改","save()","","","",""},
{"true","All","Button","保存","保存所有修改","as_Save()","","","",""},
//{"true","","Button","删除","删除","if(confirm('确实要删除吗?'))as_delete(0,'alert(getRowCount(0))')","","","","btn_icon_delete",""},
};
%><%@include file="/Frame/resources/include/ui/include_list.jspf"%>

View File

@ -6,12 +6,8 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import jbo.app.tenwa.calc.VI_NORMALSETTLE_CONTRACT;
import jbo.awe.USER_INFO;
import jbo.com.tenwa.lease.comm.DAY_DISTRIBUTE;
import jbo.com.tenwa.lease.comm.LB_CONTRACT_INFO;
import jbo.com.tenwa.lease.comm.VI_AUTODISTRIBUTE;
import jbo.com.tenwa.lease.comm.VI_NORMALEND_CONTRACT;
import jbo.sys.OVERDUE_DUNNING_INFO;
import org.quartz.Job;
@ -20,129 +16,67 @@ 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.amarsoft.awe.util.ASResultSet;
import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
import com.amarsoft.context.ASUser;
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.comm.util.jboutil.SaveBusinessStatus;
import com.tenwa.lease.app.quartzmession.JobInitUserName;
import com.tenwa.officetempalte.action.CreateOfficeAction;
//import com.tenwa.quartz.BeforeSerialTimingTask;
//import com.tenwa.quartz.service.BeforeSerialTimingTaskService;
//import com.tenwa.quartz.serviceImpl.BeforeSerialTimingTaskServiceImpl;
import com.tenwa.reckon.util.UUIDUtil;
import org.apache.log4j.Logger;
public class AutoDistribute implements Job{
public class AutoDistribute implements Job {
private JobInitUserName jboName;
@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();
String curUserId = userId == null ? "system" : userId.toString();
try {
JBOTransaction tx = JBOFactory.createJBOTransaction();
ownershipTransferSign(tx,arg0);
ownershipTransferSign(tx, arg0);
tx.commit();
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "success", "成功", curUserId);
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "success","成功", curUserId);
} catch (Exception e) {
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "error", "失败", curUserId);
QuartzUtil.insertLog(startime, "quartz.AutoDistribute", "error","失败", curUserId);
e.printStackTrace();
}
}
}
@SuppressWarnings("unused")
public void ownershipTransferSign(JBOTransaction tx ,JobExecutionContext arg0) throws Exception{
Transaction Sqlca = null;
Sqlca = Transaction.createTransaction(tx);
//int beginDay1 = 0;
//int endDay1 = 0;
int beginDay2 = 0;
int endDay2 = 0;
//int beginDay3 = 0;
public void ownershipTransferSign(JBOTransaction tx,JobExecutionContext arg0) throws Exception{
//获取天数
/*@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").getInt();
if("轻催组".equals(role)){
beginDay1 = beginDay;
endDay1 = endDay;
}else if("中催组".equals(role)){
beginDay2 = beginDay;
endDay2 = endDay;
}else{
beginDay3 = beginDay;
}
}*/
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");
BizObject dayDistribute = JBOFactory.createBizObjectQuery(DAY_DISTRIBUTE.CLASS_NAME, "role=:role").setParameter("role", "中催组").getSingleResult(false);
if(dayDistribute !=null){
beginDay2 = dayDistribute.getAttribute("begin_day").getInt();
endDay2 = dayDistribute.getAttribute("end_day").getInt();
}else{
return;
}
//轻催组下的用户
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(Sqlca, Sql1, null);
String userA = new String();
for (Map<String, String> map : dataListA) {
String userid = map.get("userid");
userA += userid+"@";
//获取催款员角色下的用户
Map<String,String[]> userMap = getUser(tx);
String[] A = userMap.get("A");//轻催租
String[] B = userMap.get("B");//中催组
String[] C = userMap.get("C");//重催组
}
String[] A =null;
A = userA.split("@");
//中催组下的用户
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(Sqlca, 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("@");
//重催组下的用户
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(Sqlca, 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("@");
BizObjectManager overdueManager = JBOFactory.getBizObjectManager(OVERDUE_DUNNING_INFO.CLASS_NAME, tx);
//获取所有逾期的需要催收的合同信息
String conInfo1 = getContractId(tx);
String overDays = "";
BizObjectManager overdueManager = JBOFactory.getBizObjectManager(OVERDUE_DUNNING_INFO.CLASS_NAME, tx);
if(!(conInfo1 == null || conInfo1.length() <= 0)){
String[] conInfos = conInfo1.split(",");
for(String conInfo:conInfos){
String contract_id = conInfo.split("@")[0];
overDays = conInfo.split("@")[1];
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){//修改
//催款员
@ -151,232 +85,399 @@ public class AutoDistribute implements Job{
if(overDay>=beginDay2 && overDay<=endDay2){
if(Arrays.asList(B).contains(partDept)){
//此催款员是中催组的人员不做任何操作
}else{
//此催款员不是中催组的人员则修改为中催组的人员
//中催组下未分配且上岗的催款员
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 o.part_dept FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t) )";
//虽然只让查出一条数据
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(Sqlca, 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"+
" WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t)"+
" AND o.part_dept IN"+
" (SELECT O.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')";
//虽然只能查出一条数据
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(Sqlca, sqlY, null);
//判断条件
if(dataListAN !=null){
String useridAN = new String();
for (Map<String, String> map : dataListAN) {
String userid = map.get("userid");
useridAN += userid+"@";
}
String[] AN =null;
AN = useridAN.split("@");
String ANN = AN[0];
if(ANN==null || "".equals(ANN) || "null".equals(ANN)){
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+AYY+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}else{
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+ANN+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}
}else{
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+AYY+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}
}else{//此催款员不是中催组的人员则修改为中催组的人员
String person = getBPerson(tx);
updatePartDept(overdueManager, contract_id, person);
}
}else{
}else if(overDay>=beginDay3){
if(Arrays.asList(C).contains(partDept)){
//此催款员是重催组的人员不做任何操作
}else{
//此催款员不是重催组的人员则修改为重催组的人员
//重催组下未分配的用户且上岗
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 o.part_dept FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t) )";
//虽然只让查出一条数据
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(Sqlca, 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"+
" WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t)"+
" AND o.part_dept IN"+
" (SELECT O.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')";
//虽然只能查出一条数据
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(Sqlca, sqlY, null);
//判断条件
if(dataListAN !=null){
String useridAN = new String();
for (Map<String, String> map : dataListAN) {
String userid = map.get("userid");
useridAN += userid+"@";
}
String[] AN =null;
AN = useridAN.split("@");
String ANN = AN[0];
if(ANN==null || "".equals(ANN) || "null".equals(ANN)){
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+AYY+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}else{
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+ANN+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}
}else{
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//修改
overdueManager.createQuery("UPDATE O SET O.part_dept='"+AYY+"' WHERE contract_id='"+contract_id+"'").executeUpdate();
}
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{//新增
//轻催组下未分配的用户且上岗
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 o.part_dept FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) o WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t) )";
//虽然只让查出一条数据
List<Map<String, String>> dataListAN = DataOperatorUtil.getDataBySql(Sqlca, 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"+
" WHERE o.number IN (SELECT MIN(t.number) FROM (SELECT COUNT(*) number,part_dept FROM OVERDUE_DUNNING_INFO GROUP BY part_dept) t)"+
" AND o.part_dept IN"+
" (SELECT O.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')";
//虽然只能查出一条数据
List<Map<String, String>> dataListAY = DataOperatorUtil.getDataBySql(Sqlca, sqlY, null);
//新建对象
BizObject overdueBizObject = overdueManager.newObject();
String uuid = UUID.randomUUID().toString().replace("-", "");
//判断条件
if(dataListAN !=null){
String useridAN = new String();
for (Map<String, String> map : dataListAN) {
String userid = map.get("userid");
useridAN += userid+"@";
}
String[] AN =null;
AN = useridAN.split("@");
String ANN = AN[0];
if(ANN==null || "".equals(ANN) || "null".equals(ANN)){
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//新增
overdueBizObject.setAttributeValue("id", uuid);
overdueBizObject.setAttributeValue("part_dept", AYY);
overdueBizObject.setAttributeValue("contract_id", contract_id);
overdueManager.saveObject(overdueBizObject);
}else{
overdueBizObject.setAttributeValue("id", uuid);
overdueBizObject.setAttributeValue("part_dept", ANN);
overdueBizObject.setAttributeValue("contract_id", contract_id);
overdueManager.saveObject(overdueBizObject);
}
//System.out.println(ANN);
//新增
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);
}else{
String useridAY = new String();
for (Map<String, String> map : dataListAY) {
String userid = map.get("userid");
useridAY += userid+"@";
}
String[] AY =null;
AY = useridAY.split("@");
String AYY = AY[0];
//新增
overdueBizObject.setAttributeValue("id", uuid);
overdueBizObject.setAttributeValue("part_dept", AYY);
overdueBizObject.setAttributeValue("contract_id", contract_id);
overdueManager.saveObject(overdueBizObject);
}
}
}
}
}
/**
* 修改方法
* @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);
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);
List<BizObject> boList = bom.createQuery("SELECT O.id,O.over_days FROM O ").getResultList(true);
String conInfos = new String();
for(BizObject bo : boList){
conInfos += bo.getAttribute("id")+"@";
conInfos += bo.getAttribute("over_days")+",";
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;
}
}