自动分派
This commit is contained in:
parent
ba60d0b858
commit
c42909e38a
@ -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"%>
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user