问题描述
- C#合同逾期 分配给人员 30C
解决方案
查询出所有可以分配的记录
变成乱序
循环分配,直到所有合同分配完毕
解决方案二:
请问有具体操作吗?这个思路挺广泛的
解决方案三:
因为表B负责产品以及等级有些是一样的,分的时候,循环可能就全部分给他一个人了
解决方案四:
是因为数据量太大需要分表存吗?
在程序中设置一个全局变量记录当前的合同数,单数保存到A表,双数保存到B表。
解决方案五:
伪代码:
DataTable dtC = getDataTable(""人员表""); DataTable dtA = getDataTable(""表A""); if (dtC.Rows.Count == 0){ //没有可分配的人员 return;} if (dtA.Rows.Count == 0){ //没有可分配的任务; return;} int offset = 0; while (dtA.Rows.Count - offset > dtC.Rows.Count){ for(int i = 0; i < dtB.Rows.Count; i++){ //向表B插入分配记录 …… } offset += dtC.Rows.Count; }Random rnd = new Random();List<int> yfp = new List<int>(); //已经分配任务的ID列表 for(int i = offset; i < dtA.Rows.Count; i++){ int ryid = rnd.Next(0 dtC.Rows.Count - 1); //随机取人员ID while (yfp.Contains(ryid)) { //如果已分配则重新获取 ryid = rnd.Next(0 dtB.Rows.Count - 1); } yfp.Add(ryid); //向表B插入分配记录 ……}
解决方案六:
先开个分配统计表(人员ID分配数)
表A中把分组用的(门店、产品、等级)取出来进行循环:
1)表A取该分组的明细
2)表B取该分组的明细、并且和分配统计表关联、按分配数升序排序
3)把合同明细和人员明细一对一循环分配(人员不足继续从头开始),每分配一个分配数加1
这样之前分配数少的会在之后多分配,比较平均。
时间: 2024-10-30 01:23:06