0

我们使用的是 MPXJ 的 C# 版本,但不是检查现有的项目文件,而是使用它纯粹从代码(从第三方系统中提取数据)生成一个新文件,以便通过MSPDIWriter.

目标是让在其他系统中报告为已完成的任务显示为 100% 完成,并且当 XML 加载到 Project 中时,它们旁边的 ✔ 复选标记会显示在甘特图视图中。仅当分配给任务的总持续时间为零天时,这才按预期工作;对于 Project 打开任务的完成百分比设置为 0% 的任何其他持续时间。

我们的开发人员不是项目人员,因此我们不清楚哪些属性会影响此行为:

Task childTask = parent.AddTask();
childTask.Name = sourceItem.Title;
Duration duration = Duration.getInstance(sourceItem.Days, TimeUnit.DAYS);
childTask.PercentageComplete = new java.lang.Integer(childItem.PercentageComplete);
childTask.PercentageWorkComplete = childTask.PercentageComplete;

ResourceAssignment assignment = childTask.AddResourceAssignment(resource);
assignment.Work = duration;
assignment.RemainingWork = duration;
assignment.percentageWorkComplete = childTask.PercentageComplete;

childTask.EffortDriven = false;
childTask.Priority = childItem.Priority;
childTask.Duration = duration;
childTask.BaselineDuration = duration;
if (childItem.PercentComplete == 100)
{
    childTask.RemainingWork = Duration.getInstance(0, TimeUnit.DAYS);
}
4

1 回答 1

0

示例代码执行从头开始创建文件的步骤,该文件包含未开始、部分完成和已完成任务的各种组合,包括资源分配和不分配资源。有一个C# 版本,但我必须承认我没有让两者保持一致。Java 版本可能更完整,希望得到一个工作的 C# 版本应该相当简单。

我建议从这些示例开始并首先从它们生成 MSPDI 文件,验证在将文件导入 MS Project 时您是否获得了预期的结果。希望您随后能够根据示例文件中采用的方法更新您的代码。

需要注意的一件事是,最近对 MSPDI 生成进行了一些改进,与正确显示完成百分比有关,因此值得验证您正在使用最新版本的 MPXJ(撰写本文时为 7.9.2) )。

于 2019-09-03T10:14:40.397 回答