Browse Source

1216更新,项目启用禁用反写,更新工时

huchenghua 1 year ago
parent
commit
5f8c4ea3ac

+ 45 - 8
src/com/kingdee/eas/hr/project/app/WorkHoursFacadeControllerBean.java

@@ -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();
+				}
+			}
+    	}
     }
     
     /**

+ 73 - 0
websrc/com/kingdee/eas/custom/server/MyShrMobileNewService.java

@@ -0,0 +1,73 @@
+package com.kingdee.eas.custom.server;
+
+import java.math.BigDecimal;
+import java.security.SecureRandom;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.bos.bsf.service.app.IHRMsfService;
+import com.kingdee.eas.base.permission.UserInfo;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.util.app.ContextUtil;
+import com.kingdee.shr.empresume.util.ErrorCodeUtil;
+
+public class MyShrMobileNewService implements IHRMsfService{
+	
+	private static final String ALGORITHM = "AES";
+	private static final int KEY_SIZE = 128;
+	
+	public Object process(Context ctx, Map param) throws EASBizException, BOSException {
+		String password = ctx.getAIS();
+		UserInfo currentUserInfo = ContextUtil.getCurrentUserInfo(ctx);
+		HashMap map = new HashMap();
+	    String data = currentUserInfo.getPerson().getId().toString()+","+System.currentTimeMillis();
+        String encryptedData = null;
+        //¼ÓÃÜ
+		try {
+			encryptedData = encrypt(data, password);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		System.out.println("encryptedData:"+encryptedData);
+		map.put("encryptedData", encryptedData);
+		ErrorCodeUtil.setSuccess(map, ctx);
+		return map;
+	}
+	
+	private  String encrypt(String data, String password) throws Exception {
+	        SecretKey key = generateKey(password);
+	        Cipher cipher = Cipher.getInstance(ALGORITHM);
+	        cipher.init(Cipher.ENCRYPT_MODE, key);
+	        byte[] encryptedData = cipher.doFinal(data.getBytes());
+	        return Base64.getEncoder().encodeToString(encryptedData);
+	}
+	 
+	private  String decrypt(String encryptedData, String password) throws Exception {
+	        SecretKey key = generateKey(password);
+	        Cipher cipher = Cipher.getInstance(ALGORITHM);
+	        cipher.init(Cipher.DECRYPT_MODE, key);
+	        byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
+	        return new String(decryptedData);
+	}
+	 
+	private  SecretKey generateKey(String password) throws Exception {
+	        KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
+	        keyGenerator.init(KEY_SIZE, new SecureRandom(password.getBytes()));
+	        return new SecretKeySpec(keyGenerator.generateKey().getEncoded(), ALGORITHM);
+	}
+}

+ 5 - 2
websrc/com/kingdee/eas/hr/project/handler/ProjectManagementEditHandler.java

@@ -20,6 +20,7 @@ import com.kingdee.eas.hr.project.IProjectManagement;
 import com.kingdee.eas.hr.project.ProjectManagementFactory;
 import com.kingdee.eas.hr.project.ProjectManagementInfo;
 import com.kingdee.eas.hr.project.projectState;
+import com.kingdee.eas.hr.project.utils.ProjectManagementUtils;
 import com.kingdee.eas.util.app.ContextUtil;
 import com.kingdee.shr.base.syssetting.context.SHRContext;
 import com.kingdee.shr.base.syssetting.exception.SHRWebException;
@@ -67,15 +68,15 @@ public class ProjectManagementEditHandler extends EditHandler{
 					result.put("state", "error");
 					result.put("errorMsg", "只能启用“未启用”、“禁用”的项目!");
 				} else {
-					
 			        if (getProject.isIsFirstEnabled()) {
 			        	BigDecimal plannedManDays = getProject.getPlannedManDays();
 			            getProject.setTotalPersonDays(plannedManDays);
 			            getProject.setIsFirstEnabled(false);
-			            iProjectManagement.update(new ObjectUuidPK(billId), getProject);
 			        }
 					getProject.setProjectState(projectState.INPROGRESS);
 					iProjectManagement.update(new ObjectUuidPK(billId), getProject);
+				    ProjectManagementUtils ut = new ProjectManagementUtils();
+		            ut.initMember(ctx, getProject, true);
 					result.put("state", "success");
 				}
 			} catch (Exception var9) {
@@ -119,6 +120,8 @@ public class ProjectManagementEditHandler extends EditHandler{
 				} else {
 					getProject.setProjectState(projectState.DISABLES);
 					iProjectManagement.update(new ObjectUuidPK(billId), getProject);
+					ProjectManagementUtils ut = new ProjectManagementUtils();
+					ut.initMember(ctx, getProject, false);
 					result.put("state", "success");
 				}
 			} catch (Exception var9) {

+ 8 - 2
websrc/com/kingdee/eas/hr/project/handler/ProjectManagementListHandler.java

@@ -24,6 +24,7 @@ import com.kingdee.eas.hr.project.ProjectManagementCollection;
 import com.kingdee.eas.hr.project.ProjectManagementFactory;
 import com.kingdee.eas.hr.project.ProjectManagementInfo;
 import com.kingdee.eas.hr.project.projectState;
+import com.kingdee.eas.hr.project.utils.ProjectManagementUtils;
 import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
 import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
 import com.kingdee.shr.base.syssetting.context.SHRContext;
@@ -36,7 +37,6 @@ import com.kingdee.util.StringUtils;
 
 public class ProjectManagementListHandler  extends ListHandler {
 	
-
 	private static Logger logger = Logger.getLogger(ProjectManagementListHandler.class);
 	
 	public void enablePorjectAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
@@ -87,6 +87,9 @@ public class ProjectManagementListHandler  extends ListHandler {
 				            getProject.setTotalPersonDays(plannedManDays);
 				            getProject.setIsFirstEnabled(false);
 				            iProjectManagement.update(new ObjectUuidPK(billId), getProject);
+				            
+				            ProjectManagementUtils ut = new ProjectManagementUtils();
+							ut.initMember(ctx, getProject, true);
 				        }
 						getProject.setProjectState(projectState.INPROGRESS);
 						iProjectManagement.update(new ObjectUuidPK(billId), getProject);
@@ -151,6 +154,8 @@ public class ProjectManagementListHandler  extends ListHandler {
 						body.setMuitTipsMessage("只能禁用“进行中”的项目!");
 						batchMessageTipsHeader.addResult(body);
 					} else {
+						ProjectManagementUtils ut = new ProjectManagementUtils();
+						ut.initMember(ctx, getProject, false);
 						getProject.setProjectState(projectState.DISABLES);
 						iProjectManagement.update(new ObjectUuidPK(billId), getProject);
 						++success;
@@ -275,7 +280,8 @@ public class ProjectManagementListHandler  extends ListHandler {
 				body.setId(billId);
 
 				try {
-					if (getProject.getProjectState() != null && getProject.getProjectState().getValue() != 0) {
+					if (getProject.getProjectState() != null && getProject.getProjectState().getValue() != 0
+							&& getProject.getProjectState().getValue() != 3) {
 						++failure;
 						body.setMuitTipsState(Boolean.FALSE);
 						body.setMuitTipsMessage("只能删除“未启用”的项目!");

+ 63 - 0
websrc/com/kingdee/eas/hr/project/handler/WorkHoursReportListHandler.java

@@ -0,0 +1,63 @@
+package com.kingdee.eas.hr.project.handler;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.springframework.ui.ModelMap;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.hr.project.WorkHoursFacadeFactory;
+import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
+import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
+import com.kingdee.shr.base.syssetting.context.SHRContext;
+import com.kingdee.shr.base.syssetting.exception.SHRWebException;
+import com.kingdee.shr.base.syssetting.web.handler.ListHandler;
+
+public class WorkHoursReportListHandler extends ListHandler {
+
+	private static Logger logger = Logger.getLogger(WorkHoursReportListHandler.class);
+	
+	/**
+	 * 
+	 * @param request
+	 * @param response
+	 * @param modelMap
+	 * @throws SHRWebException
+	 */
+	public void initWorkHoursReportAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap)
+			throws SHRWebException {
+		Context ctx = SHRContext.getInstance().getContext();
+		String billIds = request.getParameter("billId");
+		BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
+		int success = 0;
+		int failure = 0;
+
+		BatchMessageTipsBody body = new BatchMessageTipsBody();
+		try {
+				WorkHoursFacadeFactory.getLocalInstance(ctx).updateWorkHoursReport(null, null, null, 100, "update");
+				body.setMuitTipsState(Boolean.TRUE);
+				body.setMuitTipsMessage("禁用成功!");
+				batchMessageTipsHeader.addResult(body);
+		} catch (EASBizException var18) {
+			logger.error(var18.getMessage(), var18);
+			++failure;
+			body.setMuitTipsState(Boolean.FALSE);
+			body.setMuitTipsMessage("失败!" + var18.getMessage());
+			batchMessageTipsHeader.addResult(body);
+		} catch (BOSException var19) {
+			logger.error(var19.getMessage(), var19);
+			++failure;
+			body.setMuitTipsState(Boolean.FALSE);
+			body.setMuitTipsMessage("失败!" + var19.getMessage());
+			batchMessageTipsHeader.addResult(body);
+		}
+
+		batchMessageTipsHeader.setBillId(billIds);
+		batchMessageTipsHeader.setFailureCount(failure);
+		batchMessageTipsHeader.setSuccessCount(success);
+		this.writeSuccessData(batchMessageTipsHeader);
+	}
+}

+ 61 - 0
websrc/com/kingdee/eas/hr/project/utils/ProjectManagementUtils.java

@@ -0,0 +1,61 @@
+package com.kingdee.eas.hr.project.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.kingdee.bos.BOSException;
+import com.kingdee.bos.Context;
+import com.kingdee.eas.common.EASBizException;
+import com.kingdee.eas.hr.project.IMemberManagement;
+import com.kingdee.eas.hr.project.MemberManagementCollection;
+import com.kingdee.eas.hr.project.MemberManagementFactory;
+import com.kingdee.eas.hr.project.MemberManagementInfo;
+import com.kingdee.eas.hr.project.ProjectManagementInfo;
+import com.kingdee.eas.hr.project.ProjectRoleFactory;
+import com.kingdee.eas.hr.project.ProjectTypeFactory;
+import com.kingdee.shr.base.syssetting.BaseItemStateEnum;
+
+public class ProjectManagementUtils {
+
+	/***
+	 * 如果存在就更新不存在就新增
+	 * @param ctx
+	 * @param getProject
+	 * @param bo
+	 * @throws BOSException
+	 * @throws EASBizException
+	 */
+	public  static void initMember(Context ctx,ProjectManagementInfo getProject,boolean bo) throws BOSException, EASBizException{
+		MemberManagementInfo meInfo = null;
+		MemberManagementCollection coll = null;
+		IMemberManagement biz = MemberManagementFactory.getLocalInstance(ctx);
+		coll = biz.getMemberManagementCollection(" where projectManagement.id = '"+getProject.getId()+"' "
+        		+ "and employee.id = '"+getProject.getProjectManager().getId()+"'");
+		System.out.println("initMember:"+" where projectManagement.id = '"+getProject.getId()+"' "
+        		+ "and employee.id = '"+getProject.getProjectManager().getId()+"'");
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+		
+        if(coll != null && coll.size() > 0) {
+        	meInfo = coll.get(0);
+        }else {
+            meInfo = new MemberManagementInfo();
+            meInfo.setProjectManagement(getProject);
+            meInfo.setEmployee(getProject.getProjectManager());
+            meInfo.setCU(getProject.getCU());
+            meInfo.setHrOrgUnit(getProject.getHrOrgUnit());
+            meInfo.setAdminOrg(getProject.getAdminOrg());
+            meInfo.setProjectName(getProject.getProjectName());
+            meInfo.setProjectCode(getProject.getNumber());
+            meInfo.setPtype(ProjectTypeFactory.getLocalInstance(ctx).getProjectTypeInfo("where number = '001'")); //项目经理
+            meInfo.setProjectRole(ProjectRoleFactory.getLocalInstance(ctx).getProjectRoleInfo("where number = '001'")); //项目经理
+            meInfo.setNumber("auto-"+simpleDateFormat.format(new Date()));
+            meInfo.setEmployee(getProject.getProjectManager());
+        }
+        meInfo.setState(BaseItemStateEnum.DISABLE);
+        //启用
+        if(bo) {
+        	meInfo.setState(BaseItemStateEnum.ENABLE);
+        }
+        biz.save(meInfo);
+	}
+}