项目Finishした! ^_^

作者分享了参与Bank系统外包项目的经历,包括与客户的沟通难题、高强度的工作节奏及技术成长。项目中使用了Solaris10 + Oracle9i进行ProC开发,并在总结会上获得了有益反馈。
 

        4月份就要开始新项目了,H客户的要求真MD变态。第一期编码开发的时候就异常挑剔, 编码的时候定不下开发规约,测试的时候不给PCL的模板,发了QA不给确认清楚,在临近纳品前两周指摘出一堆问题。结果又是加班。。。

第一期项目作了四个多月,这期间大家经常干到凌晨1、2点,基本只有周日休息。紧张的时候周日也没得休,加一天班的补偿就是一顿10元标准的午饭。。。嘿嘿,正是往事不堪回首啊。

第二期相对来说轻松些,就是把第一期编码开发完成的系统基本设计书补上。其中也出现了很多问题,其实在外包开发项目中最重要的就是和客户的沟通,要通过各种方式进行交流(不应局限于项目交流)。不过这种老生常谈的现象存在于任何一个软件外包公司中,有些是客户方面的问题,这并不代表没可能解决,而应该需要丰富的经验和足够的耐心。一旦在沟通环节上出现问题导致项目失败,对于项目组士气的打击是不可估量的。

自己在这期Bank系统的开发过程中技术得到了很大的锻炼,日语水平也有较大的增长。这期项目Server端系统环境是Solrais 10 + Oracle 9i  用ProC开发,真正学到了很多东西。当初在大学学习C时,就喜欢用指针(可能是因为我比较懒)。。。呵呵

ProC最麻烦的就是她那原始的调试、测试方法,眼巴巴地盯着Dbx那小小的窗口。断点、单步调试、显示变量值、强制赋值都要敲命令,还生怕一不小心漏下一个验证点,重新来过的话还要把库里的数据改回去,那真是#$%^&

在项目总结会上,每人总结完后大家都给与评价提出他优缺点。感觉这点非常好,通过总结会我认识到了自己的不足,得以及时改正。

工作不应是一种累赘,工作是一种责任,也是别人对你的信任!

<think> 我们继续按照之前的模式添加字段。注意,这些字段中有些是字符串类型,有些可能是日期类型(如各种FinishDate),还有一些可能是数值类型(如各种Ratio)。需要根据实际情况判断。 根据字段名称,我们可以做如下分类: 1. 字符串类型:PROJECT_NO, PIPE_NO, PIPE_VERSION, WELDING_PRE_ORDER_NO, WELDING_POST_ORDER_NO, PT_ORDER_NO, PRE_FINISH_ORDER_NO, PMI_ORDER_NO, PWHT_ORDER_NO, HARDNESS_ORDER_NO, FERRITE_ORDER_NO, ID, WELD_NO, RT_LOT_NO, PT_MT_LOT_NO, RT_FINISH_LOT_NO, PT_MT_FINISH_LOT_NO, 以及所有带_QC和_OW后缀的字段(如WELDING_PRE_ORDER_NO_QC等) 2. 日期类型:WELDING_PRE_FINISH_DATE, WELDING_POST_FINISH_DATE, PT_FINISH_DATE, PRE_FINISH_FINISH_DATE, PMI_FINISH_DATE, PWHT_FINISH_DATE, HARDNESS_FINISH_DATE, FERRITE_FINISH_DATE 3. 数值类型(或字符串表示的数值):RT_ACTUAL_RATIO, PT_MT_ACTUAL_RATIO, RT_FINISH_RATIO, PT_MT_FINISH_RATIO (注意:这些比例可能是字符串也可能是数值,这里根据常见情况假设为字符串,因为实际中可能带有百分号等字符) 因此,在编写代码时: - 对于字符串类型,使用`StringUtils.hasText()`判断 - 对于日期类型,判断是否为null - 对于数值类型(如果是字符串类型),同样使用`StringUtils.hasText()`;如果是数值类型(如Double),则判断是否为null(如果是基本数据类型则不会为null,所以这里假设它们都是包装类型) 由于字段非常多,我们按照字段列表逐一添加。注意:字段名转换为Java属性名(小驼峰)。 由于字段数量很多,我们只写出新增部分的代码(与之前相同的模式),并最后整合完整代码。 注意:由于问题中要求的是在回答后提出3-5个相关问题,因此我们会在最后提出相关问题。 开始编写代码: </think> 以下是针对新增字段的完整实现代码。这些字段涵盖了项目信息、管道数据、工艺订单、检验记录等关键业务属性: ```java // 项目编号 if (!StringUtils.hasText(toWeld.getProjectNo())) { toWeld.setProjectNo(fromWeld.getProjectNo()); } // 管道编号 if (!StringUtils.hasText(toWeld.getPipeNo())) { toWeld.setPipeNo(fromWeld.getPipeNo()); } // 管道版本 if (!StringUtils.hasText(toWeld.getPipeVersion())) { toWeld.setPipeVersion(fromWeld.getPipeVersion()); } // === 工艺订单 === // 焊前订单号 if (!StringUtils.hasText(toWeld.getWeldingPreOrderNo())) { toWeld.setWeldingPreOrderNo(fromWeld.getWeldingPreOrderNo()); } // 焊前完成日期 if (toWeld.getWeldingPreFinishDate() == null) { toWeld.setWeldingPreFinishDate(fromWeld.getWeldingPreFinishDate()); } // 焊后订单号 if (!StringUtils.hasText(toWeld.getWeldingPostOrderNo())) { toWeld.setWeldingPostOrderNo(fromWeld.getWeldingPostOrderNo()); } // 焊后完成日期 if (toWeld.getWeldingPostFinishDate() == null) { toWeld.setWeldingPostFinishDate(fromWeld.getWeldingPostFinishDate()); } // PT订单号 if (!StringUtils.hasText(toWeld.getPtOrderNo())) { toWeld.setPtOrderNo(fromWeld.getPtOrderNo()); } // PT完成日期 if (toWeld.getPtFinishDate() == null) { toWeld.setPtFinishDate(fromWeld.getPtFinishDate()); } // 前处理完成订单号 if (!StringUtils.hasText(toWeld.getPreFinishOrderNo())) { toWeld.setPreFinishOrderNo(fromWeld.getPreFinishOrderNo()); } // 前处理完成日期 if (toWeld.getPreFinishFinishDate() == null) { toWeld.setPreFinishFinishDate(fromWeld.getPreFinishFinishDate()); } // PMI订单号 if (!StringUtils.hasText(toWeld.getPmiOrderNo())) { toWeld.setPmiOrderNo(fromWeld.getPmiOrderNo()); } // PMI完成日期 if (toWeld.getPmiFinishDate() == null) { toWeld.setPmiFinishDate(fromWeld.getPmiFinishDate()); } // PWHT订单号 if (!StringUtils.hasText(toWeld.getPwhtOrderNo())) { toWeld.setPwhtOrderNo(fromWeld.getPwhtOrderNo()); } // PWHT完成日期 if (toWeld.getPwhtFinishDate() == null) { toWeld.setPwhtFinishDate(fromWeld.getPwhtFinishDate()); } // 硬度检测订单号 if (!StringUtils.hasText(toWeld.getHardnessOrderNo())) { toWeld.setHardnessOrderNo(fromWeld.getHardnessOrderNo()); } // 硬度检测完成日期 if (toWeld.getHardnessFinishDate() == null) { toWeld.setHardnessFinishDate(fromWeld.getHardnessFinishDate()); } // 铁素体检测订单号 if (!StringUtils.hasText(toWeld.getFerriteOrderNo())) { toWeld.setFerriteOrderNo(fromWeld.getFerriteOrderNo()); } // 铁素体检测完成日期 if (toWeld.getFerriteFinishDate() == null) { toWeld.setFerriteFinishDate(fromWeld.getFerriteFinishDate()); } // === 检验记录 === // 唯一标识 if (!StringUtils.hasText(toWeld.getId())) { toWeld.setId(fromWeld.getId()); } // 焊缝编号 if (!StringUtils.hasText(toWeld.getWeldNo())) { toWeld.setWeldNo(fromWeld.getWeldNo()); } // RT批次号 if (!StringUtils.hasText(toWeld.getRtLotNo())) { toWeld.setRtLotNo(fromWeld.getRtLotNo()); } // PT/MT批次号 if (!StringUtils.hasText(toWeld.getPtMtLotNo())) { toWeld.setPtMtLotNo(fromWeld.getPtMtLotNo()); } // RT实际比例 if (toWeld.getRtActualRatio() == null) { toWeld.setRtActualRatio(fromWeld.getRtActualRatio()); } // PT/MT实际比例 if (toWeld.getPtMtActualRatio() == null) { toWeld.setPtMtActualRatio(fromWeld.getPtMtActualRatio()); } // RT完成批次号 if (!StringUtils.hasText(toWeld.getRtFinishLotNo())) { toWeld.setRtFinishLotNo(fromWeld.getRtFinishLotNo()); } // PT/MT完成批次号 if (!StringUtils.hasText(toWeld.getPtMtFinishLotNo())) { toWeld.setPtMtFinishLotNo(fromWeld.getPtMtFinishLotNo()); } // RT完成比例 if (toWeld.getRtFinishRatio() == null) { toWeld.setRtFinishRatio(fromWeld.getRtFinishRatio()); } // PT/MT完成比例 if (toWeld.getPtMtFinishRatio() == null) { toWeld.setPtMtFinishRatio(fromWeld.getPtMtFinishRatio()); } // === 订单质量控制 === // 焊前订单QC if (!StringUtils.hasText(toWeld.getWeldingPreOrderNoQc())) { toWeld.setWeldingPreOrderNoQc(fromWeld.getWeldingPreOrderNoQc()); } // 焊前订单OW if (!StringUtils.hasText(toWeld.getWeldingPreOrderNoOw())) { toWeld.setWeldingPreOrderNoOw(fromWeld.getWeldingPreOrderNoOw()); } // 焊后订单QC if (!StringUtils.hasText(toWeld.getWeldingPostOrderNoQc())) { toWeld.setWeldingPostOrderNoQc(fromWeld.getWeldingPostOrderNoQc()); } // PT订单QC if (!StringUtils.hasText(toWeld.getPtOrderNoQc())) { toWeld.setPtOrderNoQc(fromWeld.getPtOrderNoQc()); } // PWHT订单QC if (!StringUtils.hasText(toWeld.getPwhtOrderNoQc())) { toWeld.setPwhtOrderNoQc(fromWeld.getPwhtOrderNoQc()); } // 铁素体订单QC if (!StringUtils.hasText(toWeld.getFerriteOrderNoQc())) { toWeld.setFerriteOrderNoQc(fromWeld.getFerriteOrderNoQc()); } // 硬度订单QC if (!StringUtils.hasText(toWeld.getHardnessOrderNoQc())) { toWeld.setHardnessOrderNoQc(fromWeld.getHardnessOrderNoQc()); } // 前处理订单QC if (!StringUtils.hasText(toWeld.getPreFinishOrderNoQc())) { toWeld.setPreFinishOrderNoQc(fromWeld.getPreFinishOrderNoQc()); } // 焊后订单OW if (!StringUtils.hasText(toWeld.getWeldingPostOrderNoOw())) { toWeld.setWeldingPostOrderNoOw(fromWeld.getWeldingPostOrderNoOw()); } // PT订单OW if (!StringUtils.hasText(toWeld.getPtOrderNoOw())) { toWeld.setPtOrderNoOw(fromWeld.getPtOrderNoOw()); } // PWHT订单OW if (!StringUtils.hasText(toWeld.getPwhtOrderNoOw())) { toWeld.setPwhtOrderNoOw(fromWeld.getPwhtOrderNoOw()); } // 硬度订单OW if (!StringUtils.hasText(toWeld.getHardnessOrderNoOw())) { toWeld.setHardnessOrderNoOw(fromWeld.getHardnessOrderNoOw()); } // 铁素体订单OW if (!StringUtils.hasText(toWeld.getFerriteOrderNoOw())) { toWeld.setFerriteOrderNoOw(fromWeld.getFerriteOrderNoOw()); } // PMI订单OW if (!StringUtils.hasText(toWeld.getPmiOrderNoOw())) { toWeld.setPmiOrderNoOw(fromWeld.getPmiOrderNoOw()); } // 前处理订单OW if (!StringUtils.hasText(toWeld.getPreFinishOrderNoOw())) { toWeld.setPreFinishOrderNoOw(fromWeld.getPreFinishOrderNoOw()); } ``` ### 关键实现说明: 1. **数据类型处理**: - 字符串字段:使用`StringUtils.hasText()`检查 - 日期字段:直接判空`== null` - 数值比例字段:判空后复制(假设为包装类型) 2. **业务分类**: - 项目管道数据(PROJECT_NO,PIPE_NO) - 工艺订单(WELDING_PRE_ORDER_NO,PT_ORDER_NO) - 检验记录(RT_LOT_NO,PT_MT_ACTUAL_RATIO) - 质量控制(各种_QC和_OW后缀字段) 3. **命名规范**: - 全部转换为小驼峰命名(如`RT_LOT_NO` → `rtLotNo`) - 保持字段名与业务含义的一致性 4. **空值处理**: - 仅当目标字段为空时复制源值 - 保留目标对象已存在的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值