催款员分派
This commit is contained in:
parent
340b61b0cd
commit
349c95e1b6
351
src_tenwa/quartz/AutoDistribute.java
Normal file
351
src_tenwa/quartz/AutoDistribute.java
Normal file
@ -0,0 +1,351 @@
|
||||
package quartz;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
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.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;
|
||||
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.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{
|
||||
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();
|
||||
|
||||
try {
|
||||
JBOTransaction tx = JBOFactory.createJBOTransaction();
|
||||
ownershipTransferSign(tx,arg0);
|
||||
tx.commit();
|
||||
QuartzUtil.insertLog(startime, "quartz.ContractInfoForNomalSettle", "success", "成功", curUserId);
|
||||
} catch (Exception e) {
|
||||
QuartzUtil.insertLog(startime, "quartz.ContractInfoForNomalSettle", "error", "失败", curUserId);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void ownershipTransferSign(JBOTransaction tx ,JobExecutionContext arg0) throws Exception{
|
||||
Transaction Sqlca = null;
|
||||
Sqlca = Transaction.createTransaction(tx);
|
||||
|
||||
//轻催组下的用户
|
||||
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+"@";
|
||||
|
||||
}
|
||||
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("@");
|
||||
|
||||
//获取所有逾期的需要催收的合同信息
|
||||
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];
|
||||
int overDay = Integer.valueOf(overDays);
|
||||
|
||||
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>3 && overDay<=15){
|
||||
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{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}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);
|
||||
//新增
|
||||
|
||||
}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 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);
|
||||
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")+",";
|
||||
}
|
||||
return conInfos;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user