| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- package com.kingdee.eas.custom.wamke.syncdata.utils;
- import com.kingdee.bos.BOSException;
- import com.kingdee.bos.Context;
- import com.kingdee.eas.basedata.org.AdminOrgUnitCollection;
- import com.kingdee.eas.basedata.org.AdminOrgUnitFactory;
- import com.kingdee.eas.basedata.org.AdminOrgUnitInfo;
- import com.kingdee.eas.basedata.org.IAdminOrgUnit;
- import com.kingdee.eas.basedata.person.IPerson;
- import com.kingdee.eas.basedata.person.PersonCollection;
- import com.kingdee.eas.basedata.person.PersonFactory;
- import com.kingdee.eas.basedata.person.PersonInfo;
- import com.kingdee.eas.common.EASBizException;
- import com.kingdee.eas.cp.wfs.utils.DateUtils;
- import com.kingdee.eas.custom.wamke.syncdata.AttFinalizationFactory;
- import com.kingdee.eas.custom.wamke.syncdata.AttFinalizationInfo;
- import com.kingdee.eas.custom.wamke.syncdata.FinalStatusEnum;
- import com.kingdee.eas.custom.wamke.syncdata.IAttFinalization;
- import com.kingdee.eas.custom.wamke.syncdata.model.SyncAttendanceRequest;
- import com.kingdee.eas.custom.wamke.syncdata.model.SyncAttendanceResponse;
- import com.kingdee.eas.framework.CoreBaseCollection;
- import com.kingdee.eas.util.app.DbUtil;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.util.Arrays;
- import java.util.List;
- import org.apache.commons.lang3.StringUtils;
- /**
- * SHR考勤数据同步
- * coyle
- * 202510
- */
- public class SHRAttendanceSync {
-
- /**
- * 分页查询
- */
- public void manualPagination(Context ctx,String updateTime,List deptNumbers) {
- SHRAttendanceSyncClient client = new SHRAttendanceSyncClient("https://rmsit.vankeservice.com");
- int currentPage = 1;
- boolean hasMoreData = true;
- while (hasMoreData) {
- SyncAttendanceRequest request = new SyncAttendanceRequest(updateTime, currentPage, 200);
- request.setDeptNumbers(deptNumbers);
- SyncAttendanceResponse response = client.syncAttendanceData(request);
- if (response.isSuccess() && response.getData() != null) {
- int recordCount = response.getData().getRecords().size();
- System.out.println("第 " + currentPage + " 页获取到 " + recordCount + " 条记录");
- // 处理当前页数据
- try {
- processAttendanceData(ctx,response);
- } catch (EASBizException e) {
- e.printStackTrace();
- } catch (BOSException e) {
- e.printStackTrace();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- // 检查是否有下一页
- if (recordCount > 0) {
- currentPage++;
- } else {
- // 当前页没有数据,停止查询
- hasMoreData = false;
- System.out.println("第 " + currentPage + " 页没有数据,查询结束");
- }
- } else {
- System.out.println("第 " + currentPage + " 页查询失败: " + response.getErrorMessage());
- hasMoreData = false;
- }
- }
- }
-
- /**
- * 处理考勤数据
- * @throws ParseException
- * @throws EASBizException
- */
- private static void processAttendanceData(Context ctx,SyncAttendanceResponse response) throws BOSException, ParseException, EASBizException {
- CoreBaseCollection coreBaseCollection = new CoreBaseCollection();
- if (response.getData() != null && response.getData().getRecords() != null) {
- for (SyncAttendanceResponse.AttendanceRecord record : response.getData().getRecords()) {
- if (record.getDetails() != null) {
- System.out.println("部门: " + record.getDeptNumber() +
- ", 考勤周期: " + record.getAttendanceCycle() +
- ", 定案状态: " + record.getLockStatus());
- //部门
- IAdminOrgUnit orgIns = AdminOrgUnitFactory.getLocalInstance(ctx);
- AdminOrgUnitCollection orgCol = orgIns.getAdminOrgUnitCollection("where number='" + record.getDeptNumber() + "'");
- AdminOrgUnitInfo orgInfo = new AdminOrgUnitInfo();
- if(orgCol.size()>0){
- orgInfo = orgCol.get(0);
- }else{
- continue;
- }
- //考勤周期
- String attendanceCycle = record.getAttendanceCycle();
- //定案状态
- Integer lockStatus = record.getLockStatus();
- //
- String delSql = " delete from CT_SYN_AttFinalization where " +
- " CFAttendanceCycle = '"+attendanceCycle+"' " +
- " and CFAdminOrgUnitID = '"+orgInfo.getId().toString()+"'";
- DbUtil.execute(ctx, delSql);
-
-
- for (SyncAttendanceResponse.AttendanceDetail detail : record.getDetails()) {
- System.out.println(" 用户: " + detail.getUserId() +
- ", 工资项: " + detail.getSalaryCode() +
- ", 数值: " + detail.getNumericalValue());
- AttFinalizationInfo attFinalInfo = new AttFinalizationInfo();
- IPerson personIns = PersonFactory.getLocalInstance(ctx);
- PersonCollection perCol = personIns.getPersonCollection("where number='" + detail.getUserId() + "'");
- if(perCol.size()>0){
- PersonInfo personInfo = perCol.get(0);
- attFinalInfo.setPerson(personInfo);
- }else{
- continue;
- }
-
-
- attFinalInfo.setSalaryCode(detail.getSalaryCode());
- if(StringUtils.isNotEmpty(attendanceCycle)){
- attFinalInfo.setAttendanceCycle(attendanceCycle);
- }
- attFinalInfo.setAdminOrgUnit(orgInfo);
- FinalStatusEnum fstatus = lockStatus == 1 ? FinalStatusEnum.finalized : FinalStatusEnum.resolution;
- attFinalInfo.setLockStatus(fstatus);
- attFinalInfo.setBeginDate(DateUtils.formatDate(detail.getBeginDate(), "yyyyMMdd"));
- attFinalInfo.setEndDate(DateUtils.formatDate(detail.getEndDate(), "yyyyMMdd"));
- if(StringUtils.isNotEmpty(detail.getNumericalValue())){
- BigDecimal bigDecimal = new BigDecimal(detail.getNumericalValue());
- attFinalInfo.setNumValue(bigDecimal);
- }
- coreBaseCollection.add(attFinalInfo);
- }
- }
- }
- }
- // 定案
- // IAttFinalization attfIns = AttFinalizationFactory.getLocalInstance(ctx);
- //// attfIns.addnew(coreBaseCollection);
-
-
-
-
-
-
- }
-
-
-
-
-
-
-
-
-
-
-
- }
|