|
|
@@ -74,10 +74,10 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
|
|
|
sb.append(" where t3.CFExpectedStartTime <FPUNCHCARDTIME and t3.CFExpectedEndTime >= FPUNCHCARDTIME ").append(" \n");
|
|
|
sb.append(" and t.fid not in (select FSOURCEBILLID from CT_PRO_WorkHoursConfirm where FSOURCEBILLID is not null ) ").append(" \n");
|
|
|
//按照时间过滤
|
|
|
- if(star != null) {
|
|
|
- sb.append(" and t.FPUNCHCARDTIME >= TO_CHAR("+star+", 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
- }else if(end != null) {
|
|
|
- sb.append(" and t.FPUNCHCARDTIME <= TO_CHAR("+end+", 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
+ if(star != null && star.length() > 0) {
|
|
|
+ sb.append(" and t.FPUNCHCARDTIME >= TO_DATE('"+star+"', 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
+ }else if(end != null && end.length() > 0) {
|
|
|
+ sb.append(" and t.FPUNCHCARDTIME <= TO_DATE('"+end+"', 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
}else {
|
|
|
sb.append(" and t.FPUNCHCARDTIME >= sysdate -"+day).append(" \n");
|
|
|
}
|
|
|
@@ -244,6 +244,8 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
|
|
|
*/
|
|
|
protected void _updateWorkHoursReport(Context ctx, String number, String star, String end, int day,String type)
|
|
|
throws BOSException, EASBizException {
|
|
|
+
|
|
|
+ List<String> proidList = new ArrayList<String>();
|
|
|
//获取工时确认单生成工时单
|
|
|
String CFCLOCKTIME = null; //年月日-时分秒
|
|
|
String CFCLOCKDATE = null; //年月日
|
|
|
@@ -274,10 +276,10 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
|
|
|
+ " FROM CT_PRO_WorkHoursConfirm where FBILLSTATE ='3' "
|
|
|
+ " and CFPROJECTID is not null ").append(" \n");
|
|
|
//按照时间过滤
|
|
|
- if(star != null) {
|
|
|
- sb.append(" and CFCLOCKDATE >= TO_CHAR("+star+", 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
- }else if(end != null) {
|
|
|
- sb.append(" and CFCLOCKDATE <= TO_CHAR("+end+", 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
+ if(star != null && star.length() > 0) {
|
|
|
+ sb.append(" and CFCLOCKDATE >= TO_DATE('"+star+"', 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
+ }else if(end != null && end.length() > 0) {
|
|
|
+ sb.append(" and CFCLOCKDATE <= TO_DATE('"+end+"', 'YYYY-MM-DD HH24:MI:SS')").append(" \n");
|
|
|
}else {
|
|
|
sb.append(" and CFCLOCKDATE >= sysdate -"+day).append(" \n");
|
|
|
}
|
|
|
@@ -428,10 +430,45 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
|
|
|
if(coll.size() > 0) {
|
|
|
for (int i = 0; i < coll.size(); i++) {
|
|
|
info = (WorkHoursReportInfo) coll.get(i);
|
|
|
+ proidList.add(info.getAffiliatedProject().getId().toString());//项目id
|
|
|
IObjectPK pk = biz.addnew(info);
|
|
|
biz.setAudited(BOSUuid.read(pk.toString())); //-审核通过
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //计算比例
|
|
|
+ if(proidList.size() > 0) {
|
|
|
+ for (int i = 0; i < proidList.size(); i++) {
|
|
|
+ String proid = proidList.get(i);
|
|
|
+ rs = DbUtil.executeQuery(ctx, " SELECT tt.CFPLANNEDMANDAYS CFPLANNEDMANDAYS,sum(CASE when tt.CFWORKINGHOURS >= 8 THEN 8 ELSE tt.CFWORKINGHOURS END) CFWORKINGHOURS"
|
|
|
+ + " FROM (" +
|
|
|
+ " SELECT t2.CFPLANNEDMANDAYS CFPLANNEDMANDAYS ,to_char(t1.CFDATA,'YYYY-MM-DD') CFDATA,sum(t1.CFWORKINGHOURS) CFWORKINGHOURS FROM CT_PRO_WorkHoursReport t" +
|
|
|
+ " inner join CT_PRO_WorkHoursReportentry t1 on t1.FPARENTID = t.fid" +
|
|
|
+ " inner join CT_PRO_ProjectManagement t2 on t2.fid = t.CFAFFILIATEDPROJEC" +
|
|
|
+ " where t.FBILLSTATE = '3' and t.fid = '"+proid+"'" +
|
|
|
+ " group by t2.CFPLANNEDMANDAYS,to_char(t1.CFDATA,'YYYY-MM-DD')" +
|
|
|
+ " )tt group by tt.CFPLANNEDMANDAYS " +
|
|
|
+ "");
|
|
|
+ try {
|
|
|
+
|
|
|
+ if (rs.next()) {
|
|
|
+ BigDecimal FPRODAYCONSUMPTION = BigDecimal.ZERO;
|
|
|
+ BigDecimal CFPLANNEDMANDAYS = rs.getBigDecimal("CFPLANNEDMANDAYS"); //项目总人天
|
|
|
+ BigDecimal CFWORKINGHOURS = rs.getBigDecimal("CFWORKINGHOURS"); //申报人天 已审核通过
|
|
|
+ if(CFPLANNEDMANDAYS.compareTo(FPRODAYCONSUMPTION) == 1
|
|
|
+ && CFWORKINGHOURS.compareTo(FPRODAYCONSUMPTION) == 1) {
|
|
|
+ //项目总人天除以 申报人天
|
|
|
+ //申报人天= 总数/8
|
|
|
+ CFWORKINGHOURS = CFWORKINGHOURS.divide(new BigDecimal(8),2,BigDecimal.ROUND_HALF_UP); //8小时 四舍五入 保留2位小数
|
|
|
+ FPRODAYCONSUMPTION = CFPLANNEDMANDAYS.divide(CFWORKINGHOURS,2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
+ DbUtil.execute(ctx, "update CT_PRO_ProjectManagement set FPRODAYCONSUMPTION ="+FPRODAYCONSUMPTION+" where fid = '"+proid+"'");
|
|
|
+ }
|
|
|
+ } catch (SQLException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|