Browse Source

后台事物提交

huchenghua 7 months ago
parent
commit
b67e85ef1c

+ 20 - 0
metadata/com/kingdee/eas/hr/project/app/WorkHoursFacade.facade

@@ -121,6 +121,15 @@
                     <metadataRef />
                     <userDefined>true</userDefined>
                 </parameter>
+                <parameter>
+                    <name>type</name>
+                    <alias>facade[com.kingdee.eas.hr.project.app.WorkHoursFacade].methods.method[updateWorkHoursReport].parameters.parameter[type].alias</alias>
+                    <description>facade[com.kingdee.eas.hr.project.app.WorkHoursFacade].methods.method[updateWorkHoursReport].parameters.parameter[type].description</description>
+                    <direction>in</direction>
+                    <dataType>String</dataType>
+                    <metadataRef />
+                    <userDefined>true</userDefined>
+                </parameter>
             </parameters>
             <exceptions>
                 <bizException>
@@ -261,5 +270,16 @@
             <lang locale="zh_CN" value="" />
             <lang locale="zh_TW" value="null" />
         </rs>
+        <rs key="facade[com.kingdee.eas.hr.project.app.WorkHoursFacade].methods.method[updateWorkHoursReport].parameters.parameter[type].alias">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="是否更新覆盖" />
+            <lang locale="zh_HK" value="是否更新覆蓋" />
+            <lang locale="zh_TW" value="是否更新覆蓋" />
+        </rs>
+        <rs key="facade[com.kingdee.eas.hr.project.app.WorkHoursFacade].methods.method[updateWorkHoursReport].parameters.parameter[type].description">
+            <lang locale="en_US" value="null" />
+            <lang locale="zh_CN" value="" />
+            <lang locale="zh_TW" value="null" />
+        </rs>
     </resource>
 </facade>

+ 20 - 0
src/com/kingdee/eas/hr/project/IWorkHoursFacade.java

@@ -0,0 +1,20 @@
+package com.kingdee.eas.hr.project;
+
+import com.kingdee.bos.BOSException;
+//import com.kingdee.bos.metadata.*;
+import com.kingdee.bos.framework.*;
+import com.kingdee.bos.util.*;
+import com.kingdee.bos.Context;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.util.*;
+import com.kingdee.eas.common.EASBizException;
+import java.lang.String;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.framework.*;
+
+public interface IWorkHoursFacade extends IBizCtrl
+{
+    public void initWorkHoursReport(String number, String star, String end, int day) throws BOSException, EASBizException;
+    public void updateWorkHoursReport(String number, String star, String end, int day, String type) throws BOSException, EASBizException;
+}

+ 70 - 0
src/com/kingdee/eas/hr/project/WorkHoursFacade.java

@@ -0,0 +1,70 @@
+package com.kingdee.eas.hr.project;
+
+import com.kingdee.bos.framework.ejb.EJBRemoteException;
+import com.kingdee.bos.util.BOSObjectType;
+import java.rmi.RemoteException;
+import com.kingdee.bos.framework.AbstractBizCtrl;
+import com.kingdee.bos.orm.template.ORMObject;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.util.*;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.hr.project.app.*;
+import java.lang.String;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.framework.*;
+
+public class WorkHoursFacade extends AbstractBizCtrl implements IWorkHoursFacade
+{
+    public WorkHoursFacade()
+    {
+        super();
+        registerInterface(IWorkHoursFacade.class, this);
+    }
+    public WorkHoursFacade(Context ctx)
+    {
+        super(ctx);
+        registerInterface(IWorkHoursFacade.class, this);
+    }
+    public BOSObjectType getType()
+    {
+        return new BOSObjectType("BAE52A17");
+    }
+    private WorkHoursFacadeController getController() throws BOSException
+    {
+        return (WorkHoursFacadeController)getBizController();
+    }
+    /**
+     *获取打卡更新填报工时单据-User defined method
+     *@param number 员工编码
+     *@param star 开始时间
+     *@param end 结束时间
+     *@param day 往前计算天数
+     */
+    public void initWorkHoursReport(String number, String star, String end, int day) throws BOSException, EASBizException
+    {
+        try {
+            getController().initWorkHoursReport(getContext(), number, star, end, day);
+        }
+        catch(RemoteException err) {
+            throw new EJBRemoteException(err);
+        }
+    }
+    /**
+     *计算工时-User defined method
+     *@param number 员工
+     *@param star 开始时间
+     *@param end 结束时间
+     *@param day 计算时间
+     *@param type 是否更新覆盖
+     */
+    public void updateWorkHoursReport(String number, String star, String end, int day, String type) throws BOSException, EASBizException
+    {
+        try {
+            getController().updateWorkHoursReport(getContext(), number, star, end, day, type);
+        }
+        catch(RemoteException err) {
+            throw new EJBRemoteException(err);
+        }
+    }
+}

+ 30 - 0
src/com/kingdee/eas/hr/project/WorkHoursFacadeFactory.java

@@ -0,0 +1,30 @@
+package com.kingdee.eas.hr.project;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.BOSObjectFactory;
+import com.kingdee.bos.util.BOSObjectType;
+import com.kingdee.bos.Context;
+
+public class WorkHoursFacadeFactory
+{
+    private WorkHoursFacadeFactory()
+    {
+    }
+    public static com.kingdee.eas.hr.project.IWorkHoursFacade getRemoteInstance() throws BOSException
+    {
+        return (com.kingdee.eas.hr.project.IWorkHoursFacade)BOSObjectFactory.createRemoteBOSObject(new BOSObjectType("BAE52A17") ,com.kingdee.eas.hr.project.IWorkHoursFacade.class);
+    }
+    
+    public static com.kingdee.eas.hr.project.IWorkHoursFacade getRemoteInstanceWithObjectContext(Context objectCtx) throws BOSException
+    {
+        return (com.kingdee.eas.hr.project.IWorkHoursFacade)BOSObjectFactory.createRemoteBOSObjectWithObjectContext(new BOSObjectType("BAE52A17") ,com.kingdee.eas.hr.project.IWorkHoursFacade.class, objectCtx);
+    }
+    public static com.kingdee.eas.hr.project.IWorkHoursFacade getLocalInstance(Context ctx) throws BOSException
+    {
+        return (com.kingdee.eas.hr.project.IWorkHoursFacade)BOSObjectFactory.createBOSObject(ctx, new BOSObjectType("BAE52A17"));
+    }
+    public static com.kingdee.eas.hr.project.IWorkHoursFacade getLocalInstance(String sessionID) throws BOSException
+    {
+        return (com.kingdee.eas.hr.project.IWorkHoursFacade)BOSObjectFactory.createBOSObject(sessionID, new BOSObjectType("BAE52A17"));
+    }
+}

+ 4 - 4
src/com/kingdee/eas/hr/project/app/AbstractWorkHoursFacadeControllerBean.java

@@ -58,13 +58,13 @@ public abstract class AbstractWorkHoursFacadeControllerBean extends AbstractBizC
         return;
     }
 
-    public void updateWorkHoursReport(Context ctx, String number, String star, String end, int day) throws BOSException, EASBizException
+    public void updateWorkHoursReport(Context ctx, String number, String star, String end, int day, String type) throws BOSException, EASBizException
     {
         try {
-            ServiceContext svcCtx = createServiceContext(new MetaDataPK("04b73688-3af9-41e8-97bf-47318cdddd69"), new Object[]{ctx, number, star, end, new Integer(day)});
+            ServiceContext svcCtx = createServiceContext(new MetaDataPK("04b73688-3af9-41e8-97bf-47318cdddd69"), new Object[]{ctx, number, star, end, new Integer(day), type});
             invokeServiceBefore(svcCtx);
               if(!svcCtx.invokeBreak()) {
-            _updateWorkHoursReport(ctx, number, star, end, day);
+            _updateWorkHoursReport(ctx, number, star, end, day, type);
             }
             invokeServiceAfter(svcCtx);
         } catch (BOSException ex) {
@@ -75,7 +75,7 @@ public abstract class AbstractWorkHoursFacadeControllerBean extends AbstractBizC
             super.cleanUpServiceState();
         }
     }
-    protected void _updateWorkHoursReport(Context ctx, String number, String star, String end, int day) throws BOSException, EASBizException
+    protected void _updateWorkHoursReport(Context ctx, String number, String star, String end, int day, String type) throws BOSException, EASBizException
     {    	
         return;
     }

+ 1 - 1
src/com/kingdee/eas/hr/project/app/WorkHoursFacadeController.java

@@ -19,5 +19,5 @@ import com.kingdee.bos.framework.ejb.BizController;
 public interface WorkHoursFacadeController extends BizController
 {
     public void initWorkHoursReport(Context ctx, String number, String star, String end, int day) throws BOSException, EASBizException, RemoteException;
-    public void updateWorkHoursReport(Context ctx, String number, String star, String end, int day) throws BOSException, EASBizException, RemoteException;
+    public void updateWorkHoursReport(Context ctx, String number, String star, String end, int day, String type) throws BOSException, EASBizException, RemoteException;
 }

+ 32 - 21
src/com/kingdee/eas/hr/project/app/WorkHoursFacadeControllerBean.java

@@ -15,6 +15,7 @@ import org.apache.log4j.Logger;
 
 import com.kingdee.bos.BOSException;
 import com.kingdee.bos.Context;
+import com.kingdee.bos.dao.IObjectPK;
 import com.kingdee.bos.util.BOSUuid;
 import com.kingdee.eas.basedata.person.PersonCollection;
 import com.kingdee.eas.basedata.person.PersonFactory;
@@ -241,7 +242,7 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
     /**
      * 工时计算
      */
-    protected void _updateWorkHoursReport(Context ctx, String number, String star, String end, int day)
+    protected void _updateWorkHoursReport(Context ctx, String number, String star, String end, int day,String type)
     		throws BOSException, EASBizException {
     	//获取工时确认单生成工时单
     	String CFCLOCKTIME = null; //年月日-时分秒
@@ -286,13 +287,14 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
     	sb.append("	 order by  CFEMPLOYEEID,CFCLOCKTIME asc").append(" \n");//排序
     	//获取打卡数据-审核通过的数据
     	IRowSet rs = DbUtil.executeQuery(ctx, sb.toString());
+    	System.out.println("sb:"+sb);
 		try {
 			while (rs.next()) {
 				CFCLOCKTIME = rs.getString("CFCLOCKTIME"); //年月日-时分秒
 				CFCLOCKDATE = rs.getString("CFCLOCKDATE"); //年月日
 				CFPROJECTID = rs.getString("CFPROJECTID"); //项目id
 				CFEMPLOYEEID = rs.getString("CFEMPLOYEEID"); //人员id
-				CFCLOCKLOCATION = rs.getString("CFCLOCKLOCATION"); //位置
+				CFCLOCKLOCATION = "";//rs.getString("CFCLOCKLOCATION"); //位置
 				fid = rs.getString("fid"); //fid
 				map = new HashMap<String,String>();
 				map.put("CFCLOCKTIME", CFCLOCKTIME);
@@ -336,6 +338,7 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
 				String oldCFPROJECTID = null; //旧的项目
 				String oldCFCLOCKTIME = null;   //旧的打卡时间
 				String oldfid = null;   //旧的fid
+				String deleteWhere = " CFEMPLOYEEID='"+CFEMPLOYEEID+"' and to_char(CFDATA,'YYYY-MM-DD') = '"+CFCLOCKDATE+"'";
 				for (int j2 = 0; j2 < listMap.size(); j2++) {
 					map = listMap.get(j2);
 					CFCLOCKTIME = map.get("CFCLOCKTIME"); //年月日-时分秒
@@ -367,12 +370,9 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
 					        long diffInHours = diffInMillies / (60 * 60 * 1000);
 					        BigDecimal hours = new BigDecimal(diffInHours);
 					        //组装数据
-					        info = initInfo(ctx,CFEMPLOYEEID, oldCFPROJECTID, date, null, CFCLOCKLOCATION, hours,oldfid+","+fid);
-					        if(!delist.contains(oldfid)) {
-					        	delist.add(oldfid);
-					        }
-					        if(!delist.contains(fid)) {
-					        	delist.add(fid);
+					        info = initInfo(ctx,CFEMPLOYEEID, oldCFPROJECTID, date, sdf.format(sdf.parse(CFCLOCKTIME)), null, hours,oldfid+","+fid);
+					        if(!delist.contains(deleteWhere)) {
+					        	delist.add(deleteWhere);
 					        }
 					        coll.add(info);
 						} catch (ParseException ee) {
@@ -401,12 +401,9 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
 						        long diffInHours = diffInMillies / (60 * 60 * 1000);
 						        BigDecimal hours = new BigDecimal(diffInHours);
 						        //组装数据
-						        info = initInfo(ctx,CFEMPLOYEEID, oldCFPROJECTID, date, null, CFCLOCKLOCATION, hours,oldfid+","+fid);
-						        if(!delist.contains(oldfid)) {
-						        	delist.add(oldfid);
-						        }
-						        if(!delist.contains(fid)) {
-						        	delist.add(fid);
+						        info = initInfo(ctx,CFEMPLOYEEID, oldCFPROJECTID, date, sdf.format(sdf.parse(CFCLOCKTIME)), null, hours,oldfid+","+fid);
+						        if(!delist.contains(deleteWhere)) {
+						        	delist.add(deleteWhere);
 						        }
 						        coll.add(info);
 							} catch (ParseException ee) {
@@ -417,12 +414,24 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
 				}
 			}
 		}
-		//保存
-		biz.addnew(coll);
-		
-		if(delist != null && delist.size() > 0) {
-			
-		}
+		//删除情况下
+		if(type.equals("update") && delist.size() > 0) {
+			//删除当天
+			for (int i = 0; i < delist.size(); i++) {
+				DbUtil.execute(ctx, " delete from CT_PRO_WorkHoursReport where CFDATASOURCE = 'workHoursCal' and  FBILLSTATE = '3' "
+						+ "and CFFILLINGSTARTDATE = CFFILLINGENDDATE and fid in(select FParentID from CT_PRO_WorkHoursReportentry where "+delist.get(i)+") ");
+				DbUtil.execute(ctx, " delete from CT_PRO_WorkHoursReportentry where "+delist.get(i)+" ");
+			}
+    	}
+		//保存处理-审核通过
+		System.out.println("coll:"+coll.toString());
+    	if(coll.size() > 0) {
+    		for (int i = 0; i < coll.size(); i++) {
+    			info = (WorkHoursReportInfo) coll.get(i);
+    			IObjectPK pk = biz.addnew(info);
+    			biz.setAudited(BOSUuid.read(pk.toString())); //-审核通过
+			}
+    	}
     }
     
     /**
@@ -456,9 +465,11 @@ public class WorkHoursFacadeControllerBean extends AbstractWorkHoursFacadeContro
 		info.setDataSource(dataSource.workHoursCal);
     	info.setAffiliatedProject(proinfo);
     	info.setBillState(HRBillStateEnum.AUDITED); //审核通过
+    	info.setFillingStartDate(data); //默认当天
+    	info.setFillingEndDate(data); //默认当天
     	info.setSourceBillId(ids);
     	einfo.setEmployee(pinfo);
-    	einfo.setClockLocation("");
+//    	einfo.setClockLocation("工时计算");
     	einfo.setClockTime(ClockTime); //打卡时间
     	einfo.setData(data); //日期
     	einfo.setWorkingHours(hours); //工时