客户自动分配业务单元定时任务
This commit is contained in:
		
							parent
							
								
									499e1f6b9e
								
							
						
					
					
						commit
						8e7e22a451
					
				|  | @ -0,0 +1,66 @@ | |||
| package nc.bs.uapbd.util; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| import java.util.function.Function; | ||||
| import com.google.common.collect.Lists; | ||||
| import nc.bs.dao.BaseDAO; | ||||
| import nc.bs.framework.common.InvocationInfoProxy; | ||||
| import nc.bs.framework.common.NCLocator; | ||||
| import nc.bs.pub.pa.PreAlertObject; | ||||
| import nc.bs.pub.taskcenter.BgWorkingContext; | ||||
| import nc.bs.pub.taskcenter.IBackgroundWorkPlugin; | ||||
| import nc.itf.bd.cust.assign.ICustAssignService; | ||||
| import nc.vo.bd.cust.CustomerVO; | ||||
| import nc.vo.org.OrgVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| 
 | ||||
| public class CustomerAssginBackgroundPlugin implements IBackgroundWorkPlugin { | ||||
| 
 | ||||
| 	@Override | ||||
| 	public PreAlertObject executeTask(BgWorkingContext context) throws BusinessException { | ||||
| 		// 查询客户 | ||||
| 		String whereSql = " ts>'2025-05-01 00:00:00' order by ts desc"; | ||||
| 
 | ||||
| 		List<CustomerVO> list = (List<CustomerVO>) new BaseDAO().retrieveByClause(CustomerVO.class, whereSql); | ||||
| 		if (list == null || list.size() == 0) { | ||||
| 			return null; | ||||
| 		} | ||||
| 		// 查询需要分配的业务单元 | ||||
| 		OrgVO[] virtulaOrg = getVirtulaOrg(); | ||||
| 		String[] orgPks = Arrays.stream(virtulaOrg).map(OrgVO::getPk_org).toArray(String[]::new); | ||||
| 		// 将客户按照100条进行拆分 | ||||
| 		List<List<CustomerVO>> batches = Lists.partition(list, 50); | ||||
| 		for (int i = 0; i < batches.size(); i++) { | ||||
| 			List<CustomerVO> custList = batches.get(i); | ||||
| 			// 拿到客户编码 | ||||
| 			String[] custPks = toPropertyArray(custList, CustomerVO::getPk_customer, String.class); | ||||
| 			((ICustAssignService) NCLocator.getInstance().lookup(ICustAssignService.class)).assignCustomerByPks(custPks, | ||||
| 					orgPks, (String[]) null); | ||||
| 		} | ||||
| 		// 调用接口进行分配 | ||||
| 		return null; | ||||
| 	} | ||||
| 
 | ||||
| 	public static <T, R> R[] toPropertyArray(List<T> list, Function<T, R> propertyExtractor, Class<R> clazz) { | ||||
| 		return list.stream().map(propertyExtractor) | ||||
| 				.toArray(size -> (R[]) java.lang.reflect.Array.newInstance(clazz, size)); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * 查询组织信息 | ||||
| 	 * | ||||
| 	 * @author mzr | ||||
| 	 * @date 2025/05/29 | ||||
| 	 */ | ||||
| 	public OrgVO[] getVirtulaOrg() throws BusinessException { | ||||
| 		String groupID = InvocationInfoProxy.getInstance().getGroupId(); | ||||
| 		// NCCForUAPLogger.debug("groupID = " + groupID); | ||||
| 		// enablestate 启用状态 isbusinessunit 是否业务单元数据 | ||||
| 		String condition = "pk_group = '" + groupID + "' and ENABLESTATE = '2' and isbusinessunit='Y'"; | ||||
| 		Collection<OrgVO> collection = (new BaseDAO()).retrieveByClause(OrgVO.class, condition, "code"); | ||||
| 		return collection.toArray(new OrgVO[0]); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue