yuanzhi_kuang 3 روز پیش
والد
کامیت
51047c4bf6

+ 92 - 0
websrc/com/kingdee/eas/custom/esign/service/MaternityAllowanceDataService.java

@@ -0,0 +1,92 @@
+package com.kingdee.eas.custom.esign.service;
+
+
+import com.kingdee.bos.util.BOSObjectType;
+import com.kingdee.bos.util.BOSUuid;
+
+
+/**
+ * 入职薪酬取数 + 产假工资
+ * @author coyle
+ * 202603
+ * 备注: 与OnboardingSalaryDataService目前是一致的,暂不使用
+ */
+public class MaternityAllowanceDataService extends OtherESignConfigDataService {
+
+
+
+	public String getSql(String id) {
+    	StringBuilder sql = new StringBuilder();
+    	
+    	// -------------------------- SELECT子句 --------------------------
+    	// 基础字段:人员姓名、身份证号、甲方名称、入职日期
+    	// 薪资计算字段:固定工资、试用期固定工资、绩效奖金、各类补贴(均为税前)
+    	sql.append("SELECT \n");
+    	sql.append("    person.FNAME_L2 AS person_name ,\n");
+    	sql.append("    person.FIDCardNO AS idcard ,\n");
+    	sql.append("    firstParty.FName_l2 as firstPartyName ,\n");
+    	sql.append("    elation.FEnterDate AS eDate ,\n");
+    	// 1. 固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
+    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
+    	// 2. 试用期固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
+    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS prob_fixed_salary ,\n");
+    	// 3. 绩效奖金(税前)= 标准绩效奖金
+    	sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD04' THEN fas.FMoney ELSE 0 END), 0) AS perf_bonus ,\n");
+    	// 4. 试用期绩效奖金(税前)= 试用期标准绩效奖金
+    	sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD74' THEN fas.FMoney ELSE 0 END), 0) AS prob_perf_bonus ,\n");
+    	// 5. 国内餐补 = 餐补补贴
+    	sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'T014' THEN fas.FMoney ELSE 0 END), 0) AS domestic_meal_subsidy ,\n");
+    	// 6. 艰苦补贴 = 艰苦补贴
+    	sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD05' THEN fas.FMoney ELSE 0 END), 0) AS hardship_subsidy ,\n");
+    	// 7. 社保公积金补贴 = 社保公积金补贴
+    	sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD101' THEN fas.FMoney ELSE 0 END), 0) AS social_fund \n");
+
+		// 8. 总部人员产假工资:
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'TD101' ) THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
+		// 9. 月薪产假工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'TD03', 'TD02', 'TD06' , 'TD101') THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
+		// 10.日薪产假工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'TD06', 'TD07' ) THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
+
+    	// -------------------------- FROM子句 --------------------------
+    	// 表关联逻辑:
+    	// 1. T_bd_Person(人员表)关联T_HR_EmpLaborRelation(用工关系表):取入职日期
+    	// 2. 人员表关联T_HR_SFixAdjustSalary(固定薪资调整表):取薪资金额
+    	// 3. 薪资表关联T_HR_SCmpItem(薪资项目表):按薪资项目编码过滤
+    	// 4. 人员表关联T_HR_EmployeeContract(员工合同表):关联甲方信息
+    	// 5. 合同表关联T_HR_LabContractFirstParty(合同甲方表):取甲方名称
+    	sql.append("FROM \n");
+    	sql.append("    T_bd_Person person \n");
+    	sql.append("LEFT JOIN T_HR_EmpLaborRelation elation on person.fid = elation.FPersonID \n");
+    	sql.append("LEFT JOIN T_HR_SFixAdjustSalary fas ON person.FID = fas.FPersonID\n");
+    	sql.append("LEFT JOIN T_HR_SCmpItem sitem ON fas.FCmpItemID = sitem.FID\n");
+    	sql.append("LEFT JOIN T_HR_EmployeeContract econtract on econtract.FEmployeeID = person.FID\n");
+    	sql.append("LEFT JOIN T_HR_LabContractFirstParty firstParty on econtract.FContFirstPartyID = firstParty.FID \n");
+    	
+ 
+    	sql.append("WHERE \n");
+    	sql.append("    sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02', 'TD04', 'TD74', 'T014', 'TD05', 'TD101' ,'TD03' ,'TD06' ,'TD07') \n");
+    	sql.append("    and fas.FLeffectDay = '2199-12-31 00:00:00' \n");
+    	sql.append("    AND  econtract. FState = '1' AND  econtract.FNewState  = '1' AND  econtract.FIsNewestContract = '1'   \n");
+        BOSUuid read = BOSUuid.read(id);
+        BOSObjectType type = read.getType();
+    	 if (type.toString().equals("7BD37592")){//id类型为合同
+         	sql.append("and  person.fid  in (select FEmployeeID from T_HR_EmployeeContract where fid = '"+id+"')" ) ;
+         }else  if (type.toString().equals("80EF7DED")){//id类型为员工felse
+         	sql.append("and person.fid = '"+id+"'");
+         }
+    	sql.append("GROUP BY \n");
+    	sql.append("    person.FID, person.FNAME_L2 , elation.FEnterDate , person.FIDCardNO , firstParty.FName_l2 \n");
+    	
+    	// -------------------------- ORDER BY子句 --------------------------
+    	// 排序规则:按人员姓名升序排列
+    	sql.append("ORDER BY \n");
+    	sql.append("    person.FNAME_L2");
+    	
+    	System.out.print("osfsql"+sql.toString());
+    	return sql.toString();
+    }
+
+
+     
+}

+ 75 - 166
websrc/com/kingdee/eas/custom/esign/service/OnboardingSalaryDataService.java

@@ -11,173 +11,82 @@ import com.kingdee.bos.util.BOSUuid;
  * 202602
  */
 public class OnboardingSalaryDataService extends OtherESignConfigDataService {
+
+
 	public String getSql(String id) {
-    	StringBuilder sql = new StringBuilder();
-    	
-    	// -------------------------- SELECT子句 --------------------------
-    	// 基础字段:人员姓名、身份证号、甲方名称、入职日期
-    	// 薪资计算字段:固定工资、试用期固定工资、绩效奖金、各类补贴(均为税前)
-    	sql.append("SELECT \n");
-    	sql.append("    person.FNAME_L2 AS person_name ,\n");
-    	sql.append("    person.FIDCardNO AS idcard ,\n");
-    	sql.append("    firstParty.FName_l2 as firstPartyName ,\n");
-    	sql.append("    elation.FEnterDate AS eDate ,\n");
-    	// 1. 固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
-    	// 2. 试用期固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS prob_fixed_salary ,\n");
-    	// 3. 绩效奖金(税前)= 标准绩效奖金
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER = 'TD04' THEN fas.FMoney ELSE 0 END), 0) AS perf_bonus ,\n");
-    	// 4. 试用期绩效奖金(税前)= 试用期标准绩效奖金
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER = 'TD74' THEN fas.FMoney ELSE 0 END), 0) AS prob_perf_bonus ,\n");
-    	// 5. 国内餐补 = 餐补补贴
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER = 'T014' THEN fas.FMoney ELSE 0 END), 0) AS domestic_meal_subsidy ,\n");
-    	// 6. 艰苦补贴 = 艰苦补贴
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER = 'TD05' THEN fas.FMoney ELSE 0 END), 0) AS hardship_subsidy ,\n");
-    	// 7. 社保公积金补贴 = 社保公积金补贴
-    	sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER = 'TD101' THEN fas.FMoney ELSE 0 END), 0) AS social_fund \n");
-    	
-    	// -------------------------- FROM子句 --------------------------
-    	// 表关联逻辑:
-    	// 1. T_bd_Person(人员表)关联T_HR_EmpLaborRelation(用工关系表):取入职日期
-    	// 2. 人员表关联T_HR_SFixAdjustSalary(固定薪资调整表):取薪资金额
-    	// 3. 薪资表关联T_HR_SCmpItem(薪资项目表):按薪资项目编码过滤
-    	// 4. 人员表关联T_HR_EmployeeContract(员工合同表):关联甲方信息
-    	// 5. 合同表关联T_HR_LabContractFirstParty(合同甲方表):取甲方名称
-    	sql.append("FROM \n");
-    	sql.append("    T_bd_Person person \n");
-    	sql.append("LEFT JOIN T_HR_EmpLaborRelation elation on person.fid = elation.FPersonID \n");
-    	sql.append("LEFT JOIN T_HR_SFixAdjustSalary fas ON person.FID = fas.FPersonID\n");
-    	sql.append("LEFT JOIN T_HR_SCmpItem sitem ON fas.FCmpItemID = sitem.FID\n");
-    	sql.append("LEFT JOIN T_HR_EmployeeContract econtract on econtract.FEmployeeID = person.FID\n");
-    	sql.append("LEFT JOIN T_HR_LabContractFirstParty firstParty on econtract.FContFirstPartyID = firstParty.FID \n");
-    	
- 
-    	sql.append("WHERE \n");
-    	sql.append("    sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02', 'TD04', 'TD74', 'T014', 'TD05', 'TD101') \n");
-    	sql.append("    and fas.FLeffectDay = '2199-12-31 00:00:00' \n");
-    	sql.append("    AND  econtract. FState = '1' AND  econtract.FNewState  = '1' AND  econtract.FIsNewestContract = '1'   \n");
-        BOSUuid read = BOSUuid.read(id);
-        BOSObjectType type = read.getType();
-    	 if (type.toString().equals("7BD37592")){//id类型为合同
-         	sql.append("and  person.fid  in (select FEmployeeID from T_HR_EmployeeContract where fid = '"+id+"')" ) ;
-         }else  if (type.toString().equals("80EF7DED")){//id类型为员工felse
-         	sql.append("and person.fid = '"+id+"'");
-         }
-    	sql.append("GROUP BY \n");
-    	sql.append("    person.FID, person.FNAME_L2 , elation.FEnterDate , person.FIDCardNO , firstParty.FName_l2 \n");
-    	
-    	// -------------------------- ORDER BY子句 --------------------------
-    	// 排序规则:按人员姓名升序排列
-    	sql.append("ORDER BY \n");
-    	sql.append("    person.FNAME_L2");
-    	
-    	System.out.print("osfsql"+sql.toString());
-    	return sql.toString();
-    }
-//	/**
-//     * 执行SQL查询并将结果封装为JSON对象
-//     *
-//     * @param sql     要执行的查询SQL
-//     * @param context 上下文对象
-//     * @param entrys  字段映射明细集合
-//     * @return 封装后的JSON对象,包含电子签模板各字段信息
-//     */
-//    public JSONObject getData(String sql, Context context, FieldMappingEntryCollection entrys) {
-//        // 创建JSON对象用于存储最终封装的数据
-//        JSONObject jsonObject = new JSONObject();
-//        try {
-//            // 执行SQL查询,获取结果集
-//            IRowSet iRowSet1 = DBUtil.executeQuery(context, sql);
-//            // 遍历结果集中的每一行数据
-//				while (iRowSet1.next()) {
-//				    // 遍历每个字段映射明细项
-//				    for (int i = 0; i < entrys.size(); i++) {
-//				        // 获取当前索引对应的字段映射明细信息
-//				        FieldMappingEntryInfo fieldMappingEntryInfo = entrys.get(i);
-//				        // 获取明细项中关联的电子签模板字段信息
-//				        ESignTemplateFileEntryFieldInfo eField = fieldMappingEntryInfo.getEField();
-//				        // 判断该字段是否无效(已废弃)
-//				        boolean invalid = eField.isInvalid();
-//				        // 若字段无效,跳过当前循环(不处理)
-//				        if (invalid) {
-//				            continue;
-//				        }
-//				        // 获取明细项中关联的电子签模板明细信息
-//				        ESignTemplateFileEntryInfo template = fieldMappingEntryInfo.getTemplate();
-//				        // 获取电子签模板的ID
-//				        String eSignTemplateId = template.getESignTemplateId();
-//				        // 从JSON对象中获取该模板ID对应的子JSON对象
-//				        JSONObject templateJSON = jsonObject.getJSONObject(eSignTemplateId);
-//				        // 若模板对应的子JSON对象不存在,则创建并初始化(设置ID和名称)
-//				        if (templateJSON == null) {
-//				            templateJSON = new JSONObject();
-//				            templateJSON.put("id", eSignTemplateId); // 设置模板ID
-//				            templateJSON.put("name", template.getName()); // 设置模板名称
-//				            jsonObject.put(eSignTemplateId, templateJSON); // 将模板信息存入主JSON对象
-//				        }
-//				        // 从模板子JSON对象中获取字段信息对应的子JSON对象
-//				        JSONObject fields = templateJSON.getJSONObject("fields");
-//				        // 若字段信息子JSON对象不存在,则创建并添加到模板子JSON中
-//				        if (fields == null) {
-//				            fields = new JSONObject();
-//				            templateJSON.put("fields", fields);
-//				        }
-//				        // 获取电子签模板字段的ID
-//				        String templateFieldId = eField.getTemplateFieldId();
-//				        // 创建用于存储字段值信息的JSON对象
-//				        JSONObject value = new JSONObject();
-//				        value.put("name", eField.getTemplateFieldName()); // 设置字段名称
-//				        // 获取明细项中关联的数据源字段信息
-//				        //DataConfigSelectFieldEntryInfo dataSourceField = fieldMappingEntryInfo.getDataSourceField();
-////                    if (dataSourceField==null){
-////                        value.put("value","");
-////                        value.put("dataFormat", eField.getDataFormat());
-////                    }else {
-//				        // 获取数据源字段的映射键(对应数据库列名)
-//				        String name = fieldMappingEntryInfo.getEFieldMark();
-//				        // 去除映射键中的双引号(处理可能的格式问题)
-//				        //name = name.replace("\"", "");
-//				        // 从结果集中获取该字段对应的值,并存入字段值JSON对象
-//				        if (name != null && !name.equals("")) {
-//				            try {
-//								value.put("value", iRowSet1.getObject(name));
-//							} catch (SQLException e) {
-//								e.printStackTrace();
-//							}
-//				        }
-//				        // 设置字段的数据类型(取自数据源字段的类型别名)
-//				        //value.put("dataType", dataSourceField.getDataType().getAlias());
-////                    if (dataSourceField.getDataType().getAlias().equals("Date")) {
-////                        Object object = iRowSet1.getObject(name);
-////                        if (object != null) {
-////                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
-////                            value.put("value", simpleDateFormat.format(iRowSet1.getDate(name)));
-////                        }
-////                        value.put("dataFormat", eField.getDataFormat());
-////                    }
-//				        //}
-//				        if (eField.getComponentType().getValue() == 6 || eField.getComponentType().getValue() == 106) {
-//				            value.put("positionX", eField.getPositionX());
-//				            value.put("positionY", eField.getPositionY());
-//				            value.put("pageNum", eField.getPageNum());
-//				        }
-//				        // 将字段值信息存入字段信息子JSON对象(以模板字段ID为键)
-//				        fields.put(templateFieldId, value);
-//				    }
-//				}
-//
-//
-//        } catch (BOSException e) {
-//            // BOS异常时,封装为运行时异常抛出
-//            throw new RuntimeException(e);
-//        } catch (SQLException e) {
-//            // SQL异常时,封装为运行时异常抛出
-//            throw new RuntimeException(e);
-//        }
-//        // 返回封装好的JSON对象
-//        return jsonObject;
-//    }
+		StringBuilder sql = new StringBuilder();
+
+		// -------------------------- SELECT子句 --------------------------
+		// 基础字段:人员姓名、身份证号、甲方名称、入职日期
+		// 薪资计算字段:固定工资、试用期固定工资、绩效奖金、各类补贴(均为税前)
+		sql.append("SELECT \n");
+		sql.append("    person.FNAME_L2 AS person_name ,\n");
+		sql.append("    person.FIDCardNO AS idcard ,\n");
+		sql.append("    firstParty.FName_l2 as firstPartyName ,\n");
+		sql.append("    elation.FEnterDate AS eDate ,\n");
+		// 1. 固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS fixed_salary ,\n");
+		// 2. 试用期固定工资(税前)= 标准基本工资+综合工资+其他工资+加班工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02') THEN fas.FMoney ELSE 0 END), 0) AS prob_fixed_salary ,\n");
+		// 3. 绩效奖金(税前)= 标准绩效奖金
+		sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD04' THEN fas.FMoney ELSE 0 END), 0) AS perf_bonus ,\n");
+		// 4. 试用期绩效奖金(税前)= 试用期标准绩效奖金
+		sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD74' THEN fas.FMoney ELSE 0 END), 0) AS prob_perf_bonus ,\n");
+		// 5. 国内餐补 = 餐补补贴
+		sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'T014' THEN fas.FMoney ELSE 0 END), 0) AS domestic_meal_subsidy ,\n");
+		// 6. 艰苦补贴 = 艰苦补贴
+		sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD05' THEN fas.FMoney ELSE 0 END), 0) AS hardship_subsidy ,\n");
+		// 7. 社保公积金补贴 = 社保公积金补贴
+		sql.append("    ISNULL(MAX(CASE WHEN sitem.FNUMBER = 'TD101' THEN fas.FMoney ELSE 0 END), 0) AS social_fund , \n");
+
+		// 8. 总部人员产假工资:
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'T012', 'TD101' ) THEN fas.FMoney ELSE 0 END), 0) AS hqMaternity   ,\n");
+		// 9. 月薪产假工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'TD03', 'TD02', 'TD06' , 'TD101') THEN fas.FMoney ELSE 0 END), 0) AS msMaternity ,\n");
+		// 10.日薪产假工资
+		sql.append("    ISNULL(SUM(CASE WHEN sitem.FNUMBER IN ('TD01', 'TD06', 'TD07' ) THEN fas.FMoney ELSE 0 END), 0) AS dwMaternity  \n");
+
+		// -------------------------- FROM子句 --------------------------
+		// 表关联逻辑:
+		// 1. T_bd_Person(人员表)关联T_HR_EmpLaborRelation(用工关系表):取入职日期
+		// 2. 人员表关联T_HR_SFixAdjustSalary(固定薪资调整表):取薪资金额
+		// 3. 薪资表关联T_HR_SCmpItem(薪资项目表):按薪资项目编码过滤
+		// 4. 人员表关联T_HR_EmployeeContract(员工合同表):关联甲方信息
+		// 5. 合同表关联T_HR_LabContractFirstParty(合同甲方表):取甲方名称
+		sql.append("FROM \n");
+		sql.append("    T_bd_Person person \n");
+		sql.append("LEFT JOIN T_HR_EmpLaborRelation elation on person.fid = elation.FPersonID \n");
+		sql.append("LEFT JOIN T_HR_SFixAdjustSalary fas ON person.FID = fas.FPersonID\n");
+		sql.append("LEFT JOIN T_HR_SCmpItem sitem ON fas.FCmpItemID = sitem.FID\n");
+		sql.append("LEFT JOIN T_HR_EmployeeContract econtract on econtract.FEmployeeID = person.FID\n");
+		sql.append("LEFT JOIN T_HR_LabContractFirstParty firstParty on econtract.FContFirstPartyID = firstParty.FID \n");
+
+
+		sql.append("WHERE \n");
+		sql.append("    sitem.FNUMBER IN ('TD01', 'T012', 'T013', 'TD02', 'TD04', 'TD74', 'T014', 'TD05', 'TD101' ,'TD03' ,'TD06' ,'TD07') \n");
+		sql.append("    and fas.FLeffectDay = '2199-12-31 00:00:00' \n");
+		sql.append("    AND  econtract. FState = '1' AND  econtract.FNewState  = '1' AND  econtract.FIsNewestContract = '1'   \n");
+		BOSUuid read = BOSUuid.read(id);
+		BOSObjectType type = read.getType();
+		if (type.toString().equals("7BD37592")){//id类型为合同
+			sql.append("and  person.fid  in (select FEmployeeID from T_HR_EmployeeContract where fid = '"+id+"')" ) ;
+		}else  if (type.toString().equals("80EF7DED")){//id类型为员工felse
+			sql.append("and person.fid = '"+id+"'");
+		}
+		sql.append("GROUP BY \n");
+		sql.append("    person.FID, person.FNAME_L2 , elation.FEnterDate , person.FIDCardNO , firstParty.FName_l2 \n");
+
+		// -------------------------- ORDER BY子句 --------------------------
+		// 排序规则:按人员姓名升序排列
+		sql.append("ORDER BY \n");
+		sql.append("    person.FNAME_L2");
+
+		System.out.print("osfsql"+sql.toString());
+		return sql.toString();
+	}
+
+
+
 
      
 }