当前位置: 首页 > news >正文

php网站模板怎么修改中国建设银行上海市分行网站

php网站模板怎么修改,中国建设银行上海市分行网站,网站icp备案怎么查询,凡科与wordpress基于Oracle Agile PLM系统的二次开发——延期项目提醒 一.PLM概述 在今天由于全球化竞争、提升客户满意度以及业务脚步的快速提升都市足以强迫任一单位必须将产品快速的导入市场–也就是挤压产品的利润周期。 此外,为了降低成本和提升效率,各个企业都在全…

基于Oracle Agile PLM系统的二次开发——延期项目提醒

.PLM概述

在今天由于全球化竞争、提升客户满意度以及业务脚步的快速提升都市足以强迫任一单位必须将产品快速的导入市场也就是挤压产品的利润周期。

此外,为了降低成本和提升效率,各个企业都在全球各地增加人力以及供应伙伴,以提升企业的竞争力。在这种高度竞争的市场环境下,企业的成功要素就包含了:

1.快速推出产品

2.更积极有效的管理产品与流程

3.提交最高质量与最高效用的产品

4在更加复杂的全球供应链有效的进行沟通与协同作业

解决方案就是针对上述的挑战的解决方案并提供各个产业在现今竞争激烈的环境拔得头筹。同时Agile PLM解决方案也可使企业完整管理从产品设计、询价、制造、销售与售后服务的整个环节。在这每一个解决方案的主要核心就是产品纪录Product Record也就是在产品利润周期内各阶段的必要数据。例如对产品定义而言,则包含BOM表、零部件属性、图纸及模型、规范、型录及版本变更历史﹔就策略采购而言,就包含如AML,零部件价格以及产品价格历史等﹔就产品支持、服务和维修方面,则包含产品服务指令、质量数据及缺陷数据等。

解决方案由下列商业就绪(Business Ready)的解决方案所组成:

AProduct Collaboration(产品协同)

1.Product Cost Management(产品管理)

2.Product Service & Improvement(产品服务及改善)

3.Product Portfolio Management(产品组合管理)

4.Product Governance & Compliance(产品管理与法令)

5Engineering Collaboration(工程协同)

每一个解决方案都提供企业体在供应炼各方面的高度透明度,强化客户与供货商降低成本、提升效率并更快制造出更好、更具利润产品的能力。所有Agile解决方案都是构筑在Agile PLM Platform上。Agile PLM Platform是一个功能强大的标准化、安全以及可扩张性的架构平台。这个平台可确保客户快速且价格低廉(cost effective)的实施上线。

本功能是PLM自身并不具备,而在生产管理过程中又是必需的。将本功能集成以后,将改变原有系统手动检查,比对,整理和发送邮件的状态。

二.本次开发的概况

需求:项目延期(延期天数精准到小数点后两位)超过5天的,发送邮件及站内信给项目所有者的直接主管;

项目延期超过10天的,发送邮件及站内信给项目所有者的直接主管和间接主管。

邮件格式:(包括但不限于)

主题:项目类型,项目名,是否延期

内容:项目父,根,项目组名,项目组角色,计划完成时间等。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
private  static  void  getStatus(IAgileSession session, String num) {
try  {
IProgram program = (IProgram) session.getObject(IProgram.OBJECT_TYPE, num);
if  (program !=  null ) {
ITable tblSch = program.getTable(ProgramConstants.TABLE_SCHEDULE);
Iterator itSch = tblSch.iterator();
while  (itSch.hasNext()) {
IRow rowSch = (IRow) itSch.next();
Map map = rowSch.getValues();
String sub_num = (String) map.get(ProgramConstants.ATT_SCHEDULE_NUMBER);
String type = rowSch.getValue(ProgramConstants.ATT_SCHEDULE_TYPE).toString();
if ( "任务" .equals(type)) {
String statusOverall = rowSch.getValue(ProgramConstants.ATT_SCHEDULE_OVERALL_STATUS).toString();
IDataObject dataObjectTask = rowSch.getReferent();
if (dataObjectTask  instanceof  IProgram){
}
if  (STATUS_OVERALL_CH.equals(statusOverall)) {
String owner = rowSch.getValue(ProgramConstants.ATT_SCHEDULE_OWNER).toString();
IUser[] users = MailUtils.getSupervisor(session, owner);
IUser[] directors = {users[ 0 ]};
//If only status overall is abnormal,then mail to owner
MailUtils.add(mailMap, owner,sub_num);
//if delayed time of this task has surpassed six days,then mail to its owner and owner's director
IProgram programTask = (IProgram) session.getObject(IProgram.OBJECT_TYPE, sub_num);
ITable tblGnrInfo = programTask.getTable(ProgramConstants.TABLE_GENERALINFO);
Iterator itGnrInfo = tblGnrInfo.iterator();
ITable tblTeam = programTask.getTable(ProgramConstants.TABLE_TEAM);
Iterator itTeam = tblTeam.iterator();
IRow rowTeam =  null ;
while (itTeam.hasNext()){
rowTeam = (IRow) itTeam.next();
Map mapTeam = rowTeam.getValues();
}
while (itGnrInfo.hasNext()){
IRow rowGnrInfo = (IRow) itGnrInfo.next();
Map mapGnrInfo = rowGnrInfo.getValues();
String status = rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_STATUS).toString();
//three kinds of status in all
if (STATUS_NOT_START_CH.equals(status)){
SimpleDateFormat df =  new  SimpleDateFormat( "yyyy-mm-dd hh:mm:ss" );
String dateSchedule = rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_SCHEDULE_START_DATE).toString();
double  dayNumDelayed = MailUtils.getWorkDays( new  Date(dateSchedule),  new  Date());
if (dayNumDelayed >= DAYS_DELAY_ALARM_THRESHOLD_INDIRECT){
programTask.send(users,  new  MailTaskTemplate(rowSch, rowGnrInfo, rowTeam).toString());
System.out.println( "Has sent a email about delayed task:"  +
rowSch.getValue(ProgramConstants.ATT_SCHEDULE_NAME) +  "to director & indirector:"  + users[ 0 ].getName() +
" & "  + users[ 1 ].getName() +  " successfully" );
else  if (dayNumDelayed >= DAY_DELAYED_ALARM_THRESHOLD_DIRECT){
programTask.send(directors,  new  MailTaskTemplate(rowSch, rowGnrInfo, rowTeam).toString());
System.out.println( "Has sent a email about delayed task:"  +
rowSch.getValue(ProgramConstants.ATT_SCHEDULE_NAME) +  " to director:"  + directors[ 0 ].getName() +  " successfully" );
}
} else  if (STATUS_FINISHED_CH.equals(status)){
//has finished but delayed,overall status and schedule status is normal!!!
} else  if (status.contains(STATUS_PROCESSING_CH)){
//processing:1.startTime is delayed or duration is delayed
double  scheduleDuration = Double.parseDouble(rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_SCHEDULE_DURATION).toString());
double  actualDuration = Double.parseDouble(rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_ACTUAL_DURATION_VARIANCE_WORK_DAYS).toString());
double  delayDaysStarted = Double.parseDouble(rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_ACTUAL_START_VARIANCE_WORK_DAYS).toString());
if (delayDaysStarted >= DAYS_DELAY_ALARM_THRESHOLD_INDIRECT || actualDuration - scheduleDuration >= DAYS_DELAY_ALARM_THRESHOLD_INDIRECT){
programTask.send(directors,  new  MailTaskTemplate(rowSch, rowGnrInfo, rowTeam).toString());
System.out.println( "Has sent a email about delayed task:"  +
rowSch.getValue(ProgramConstants.ATT_SCHEDULE_NAME) +  " to director and indirector:"  + users[ 0 ].getName() +
" & "  + users[ 1 ].getName()  +  " successfully" );
else  if (delayDaysStarted >= DAY_DELAYED_ALARM_THRESHOLD_DIRECT || actualDuration - scheduleDuration >= DAY_DELAYED_ALARM_THRESHOLD_DIRECT){
programTask.send(users,  new  MailTaskTemplate(rowSch, rowGnrInfo, rowTeam).toString());
System.out.println( "Has sent a email about delayed task:"  +
rowSch.getValue(ProgramConstants.ATT_SCHEDULE_NAME) +  " to director:"  + directors[ 0 ].getName() +  " successfully" );
}
}
rowGnrInfo.getValue(ProgramConstants.ATT_GENERAL_INFO_SCHEDULE_START_DATE);
}
}
}
//if type equals phase,then recurse phase to get task
if  ( "阶段" .equals(type)) {
getStatus(session, sub_num);
}
}
else  {
System.out.println( "Program num maybe error" );
}
catch  (Exception ex) {
ex.printStackTrace();
}
}

设计思想:

schedule表中查出给定项目(IProgram pgm),由pgm得到scheduletbl_sch,由于项目是树形结构,tbl_sch条目列表是pgm直属的阶段(phase),任务(task)或关口(gate),如果某条目是phase,则递归调用,直到条目为任务。取出任务的generalnfoschedule,team三个表,其中前两个是前期判断需要的,team用来组织邮件。如果任务的GeneralInfo.总体状态为不正常,则判断是否为因延期导致的不正常:如果GeneralInfo.status为未开始,则使用当前时间与计划开始时间取延迟的工作日天数;如果GeneralInfo.status为已开始,则需要分别判断计划持续时间(schedule.actualDuration-schedule. scheduleDuration)以及当前时间与计划开始时间的工作日天数,按照需求规则发送站内信和邮件。获得直接和间接主管的方法为,通过programschedule表得到owner,然后新建一个IQuery(最新API中有通过sql的方式可以直接得到所有或某些user,本代码采用查全部user表,然后与owner比对,得到owner对应的user,从IUser表的第二页得到直接主管和间接主管的姓名,再将主管的姓名与userList比对,得到user)发送站内信和邮件的方式采用IDataObject(几乎本程序所有对象IProgram,ITable,IRow,IUser实现并重写了其发送站内信和邮件的send方法)。

在参考1中可以下载到agile的示例代码,而本代码中所有与agile相关的接口使用方法在示例代码中均可以看到。

参考:1.Oracle Agile PLM 示例代码http://www.oracle.com/technetwork/cn/indexes/samplecode/agileplm-sample-520945-zhs.html

2.Agile PLM系统介绍http://www.docin.com/p-332463717.html

3.ORACLEAgilePLM方案介绍http://wenku.baidu.com/view/26c6a717cc7931b765ce15c0.html



     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/1275083,如需转载请自行联系原作者




http://www.yayakq.cn/news/16791/

相关文章:

  • 仿京东电商的网站开发报价郑州区块链数字钱包网站开发方案
  • 建设局考试通知文件网站大连开发区二手房
  • 亚马逊网站联盟女人和男人做床上爱网站
  • 延安市网站建设东莞公司网站建设公司
  • 工信部网站备案平台如何在手机上运行wordpress
  • 建湖做网站的公司网站建设分期收费
  • 网站客户端制作多少钱怎样做能直接上传微信的视频网站
  • 广东知名网站免费炫酷企业网站源码
  • 青岛建设监理协会网站商机创业网2021创业
  • 备案后的域名改网站名企业网站建设套餐 网络服务
  • 吉安做网站公司国外做评论的网站
  • 怎么叫人做网站永久免费建站系统
  • 酒吧网站建设报价模板手机做app任务的网站
  • 小学校园网站怎么建设成都网站定制中心
  • 怎么做网站推画册设计一般用什么软件
  • 温州网站维护工作工装
  • 苏州企业门户网站免费交流网站建设
  • 百度门户网站asp.net 电商网站开发
  • 购物网站备案费用中国标准物质信息网网站建设
  • 最便宜的视频网站建设企业手机网站建设定制
  • 地方生活门户网站名称wordpress加密某一页面
  • 有没有专门做化妆品小样的网站网站改版换了域名
  • 网站后台添加查看爬虫的痕迹在线seo优化
  • 求推荐专业的网站建设开发深圳地图
  • 有哪些调查网站可以做兼职购物网站开发 书籍
  • 外贸网站制作有哪些网页制作工具中文版
  • 制作旅游网站网页的代码毕节市住房和城乡建设局网站
  • 在线域名ip查询广州品牌seo推广
  • 龙华网站建设yihekj互联网网站建设情况统计表
  • 常平镇仿做网站网站的佣金怎么做会计分录