src/main/java/com/gs/xky/config/DingTalkParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ package com.gs.xky.config; import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor @ToString @JsonInclude(JsonInclude.Include.NON_EMPTY) // è¿è¡ä¼æé¤æææå¼ä¸º null çåæ®µ public class DingTalkParam { private String AccessToken = "21AAA085-BE3A-4BB4-BFA4-1D0A8F973EAD"; private String LogonInfo; public DingTalkParam(int flag) { Date now = new Date(); // è·åä¸ä¸ä¸ªæ´ç¹æ¶é´ Date nextHour = getNextHour(now); String expiredDate = DateUtil.format(nextHour, "yyyy-MM-dd HH:mm:ss"); String serviceCode = "getEmployeeListForMes"; if (flag == 1) { serviceCode = "getEmployeeIncUpdateListForMes"; } // String template = "Hello, %s! Your age is %d."; String template = "LoginName=sa&BusinessUnit=0&LogonRegion=zh-CN&ExpiredDate=%s&ServiceCode=%s"; String result = String.format(template, expiredDate, serviceCode); this.LogonInfo = result; } private Date getNextHour(Date date) { // ä½¿ç¨ Hutool æªæå°å½åå°æ¶ Date truncatedDate = DateUtil.beginOfHour(date); // æ·»å ä¸ä¸ªå°æ¶ return DateUtil.offsetHour(truncatedDate, 1); } } src/main/java/com/gs/xky/config/DingTalkResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.gs.xky.config; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class DingTalkResponse<T> { @JsonProperty("Message") private String message; @JsonProperty("MessageID") private String messageID; @JsonProperty("IsSuccess") private String isSuccess; @JsonProperty("Data") private List<T> data; } src/main/java/com/gs/xky/dto/EmployeeInfo.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,78 @@ package com.gs.xky.dto; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; @Data @NoArgsConstructor @ToString @AllArgsConstructor public class EmployeeInfo { /** * åå·¥å¯ä¸æ è¯ç¬¦ */ @JsonProperty("PERSONID") private String personId; /** * åå·¥è´¦å· */ @JsonProperty("EMPLOYEEID") private String employeeId; /** * åå·¥çå®å§å */ @JsonProperty("TRUENAME") private String trueName; /** * å²ä½åç§° */ @JsonProperty("NAMES") private String names; /** * æ¯å¦æ¯å ³é®å²ä½ï¼1 æ¯ï¼0 å¦ï¼ */ @JsonProperty("IS_CORE") private Integer isCore; /** * å¨èç¶æ */ @JsonProperty("State") private String state; /** * å ¥èæ¥æ */ @JsonProperty("ATTENDONDATE") private String attendOnDate; /** * ç¦»èæ¥æ */ @JsonProperty("DIMISSIONDATE") private String dimissionDate; /** * ç´å±ç»ç» */ @JsonProperty("UNITNAME") private String unitName; /** * å ¬å¸åç§° */ @JsonProperty("CUNITNAME") private String cUnitName; @JsonProperty("laowugongsi") private String laowugongsi; } src/main/java/com/gs/xky/entity/MesStaff.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,125 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * å工信æ¯è¡¨ * * @TableName MES_STAFF */ @TableName(value = "MES_STAFF") @Data @KeySequence(value = "SEQ_MES_STAFF", dbType = DbType.ORACLE) public class MesStaff implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * ID */ @TableId private Long id; /** * åå·¥ç¼ç */ private String staffNo; /** * åå·¥å§å */ private String staffName; /** * é¨é¨ç¼ç */ private String departmentNo; /** * é¨é¨åç§° */ private String departmentName; /** * å²ä½ç¼ç */ private String positionCode; /** * å²ä½åç§° */ private String positionName; /** * ææºå· */ private String phoneNumber; /** * ä»»å²å¼å§æ¥æ */ private Date startDate; /** * 夿³¨ */ private String remark; /** * å建ç»ç» */ private Long createOrg; /** * 使ç¨ç»ç» */ private String useOrg; /** * èªå®ä¹å段3 */ private String remark3; /** * èªå®ä¹å段4 */ private String remark4; /** * èªå®ä¹å段5 */ private String remark5; /** * å建人 */ private String createBy; /** * å建æ¶é´ */ private Date createDate; /** * æ´æ°äºº */ private String lastupdateBy; /** * æ´æ°æ¶é´ */ private Date lastupdateDate; /** * 夿³¨ */ private String memo; /** * ç产线 */ private String lineNo; /** * ç产åå·¥æ è¯ */ private Long workMk; /** * æ¯å¦ç¦ç¨ */ private String fforbidStatus; /** * ä¸å¡åç±»å */ private String operatorType; /** * ç¦»èæ¶é´ */ private Date separationTime; /** * æ¯å¦æ¯å ³é®å²ä½ 0ï¼å¦ï¼1ï¼æ¯ */ private String keyPosts; } src/main/java/com/gs/xky/entity/SysUser.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,211 @@ package com.gs.xky.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * @TableName SYS_USER */ @TableName(value = "SYS_USER") @Data @KeySequence(value = "BASEINFO", dbType = DbType.ORACLE) public class SysUser implements Serializable { @TableField(exist = false) private static final long serialVersionUID = 1L; /** * */ @TableId private String fid; /** * */ private String fcode; /** * */ private String fname; /** * */ private String fpassword; /** * */ private String fbranch; /** * */ private String fplant; /** * */ private String fsystem; /** * */ private String freadonly; /** * */ private String floginName; /** * é¨é¨ */ private String departmentid; /** * è§è² */ private Long roleid; /** * çæ¬¡ */ private String expField1; /** * çº¿ä½ */ private String expField2; /** * ç §ç */ private Object expField3; /** * èç³»æ¹å¼ */ private String expField4; /** * å¾çå */ private String expField5; /** * 1为å¼åç¨æ·ï¼0为ä¸è¬æä½ç¨æ· */ private Integer lever; /** * */ private String createBy; /** * */ private Date createDate; /** * */ private Integer dev; /** * */ private Integer tet; /** * */ private Integer prd; /** * æ¯å¦ä¸ºç®¡ç人å */ private Integer ismanager; /** * æ¯å¦ä¸ºéé人å */ private Integer isacq; /** * */ private String expField6; /** * 车é´ç¼ç */ private String expField7; /** * */ private String expField8; /** * */ private String expField9; /** * */ private String expFiel10; /** * */ private String expFiel11; /** * è´¨éæ¨¡åé¦ä»¶ç¡®è®¤-åå åæè´£ä»»äºº */ private Integer qmUser; /** * æ¯å¦ä¸ºä¸´æ¶ç¨æ· */ private Integer status; /** * 1为离èï¼0为æ£å¸¸åå·¥ */ private Integer isdeparture; /** * å ¬å¸ */ private String fcompany; /** * æ¯å¦æå é¤ç¹æ */ private Long delFlag; /** * æ¥æ¶ç©ææ¯å¦è¿è¡æ£æ¥ */ private Long checkFlag; /** * */ private Long expFiel12; /** * å·¥å */ private String ffactory; /** * */ private Date pswEditTime; /** * 馿¬¡ç»é */ private Integer firstLogin; /** * æææ */ private Date periodValidity; /** * å·¥å */ private String factory; /** * */ private String company; /** * */ private Date lastlogin; /** * æåæ´æ°äºº */ private String lastupdateBy; /** * æåæ´æ°æ¥æ */ private Date lastupdateDate; /** * */ private Long sid; /** * */ private String organizeId; } src/main/java/com/gs/xky/mapper/MesStaffMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.MesStaff; /** * @author 28567 * @description é对表ãMES_STAFF(å工信æ¯è¡¨)ãçæ°æ®åºæä½Mapper * @createDate 2025-02-17 20:59:36 * @Entity com.gs.xky.entity.MesStaff */ public interface MesStaffMapper extends BaseMapper<MesStaff> { long getNextVal(); int updateStaff(); int deleteStaff(); } src/main/java/com/gs/xky/mapper/SysUserMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.gs.xky.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gs.xky.entity.SysUser; /** * @author 28567 * @description é对表ãSYS_USERãçæ°æ®åºæä½Mapper * @createDate 2025-02-17 21:00:07 * @Entity com.gs.xky.entity.SysUser */ public interface SysUserMapper extends BaseMapper<SysUser> { } src/main/java/com/gs/xky/service/ApiService.java
@@ -1,12 +1,17 @@ package com.gs.xky.service; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.gs.xky.config.ApiResponse; import com.gs.xky.config.DingTalkParam; import com.gs.xky.config.DingTalkResponse; import com.gs.xky.config.XkyCommonParam; import okhttp3.*; import org.springframework.stereotype.Service; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; @Service @@ -14,11 +19,18 @@ private final OkHttpClient client; private final ObjectMapper objectMapper; public ApiService() { this.client = new OkHttpClient.Builder().connectTimeout(90, TimeUnit.SECONDS) // Set connection timeout .readTimeout(90, TimeUnit.SECONDS) // Set read timeout .build(); this.objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd")); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); } public <T> ApiResponse<T> sendListRequest(XkyCommonParam requestBody, Class<T> responseType, String url) throws IOException { @@ -55,4 +67,40 @@ // Optionally set other fields like list or total return errorResponse; } public <T> DingTalkResponse<T> sendListRequest(DingTalkParam requestBody, Class<T> responseType, String url) throws IOException { // 设置请æ±ä½çåªä½ç±»å为 application/json MediaType mediaType = MediaType.parse("application/json"); // å° ApiCommonParam 对象转æ¢ä¸º JSON å符串 String jsonBody = objectMapper.writeValueAsString(requestBody); // å建请æ±ä½ RequestBody body = RequestBody.create(mediaType, jsonBody); Request request = new Request.Builder() .url(url) .method("POST", body) .addHeader("Content-Type", "application/json") .addHeader("Accept", "*/*") .addHeader("Connection", "keep-alive") .build(); try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { return objectMapper.readValue(response.body().string(), objectMapper.getTypeFactory().constructParametricType(DingTalkResponse.class, responseType)); } else { return handleErrorResponse1(response); } } } private <T> DingTalkResponse<T> handleErrorResponse1(Response response) throws IOException { DingTalkResponse<T> errorResponse = new DingTalkResponse<>(); errorResponse.setIsSuccess(String.valueOf(response.code())); // errorResponse.setError(response.message()); // Optionally set other fields like list or total return errorResponse; } } src/main/java/com/gs/xky/service/Impl/MesStaffServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,238 @@ package com.gs.xky.service.Impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.dto.EmployeeInfo; import com.gs.xky.entity.MesStaff; import com.gs.xky.entity.SysUser; import com.gs.xky.mapper.MesStaffMapper; import com.gs.xky.service.MesStaffService; import com.gs.xky.service.SysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author 28567 * @description é对表ãMES_STAFF(å工信æ¯è¡¨)ãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-02-17 20:59:36 */ @Service @RequiredArgsConstructor @Transactional(rollbackFor = Exception.class) public class MesStaffServiceImpl extends ServiceImpl<MesStaffMapper, MesStaff> implements MesStaffService { private final SysUserService sysUserService; private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @Override public boolean SaveStaff(List<EmployeeInfo> employeeInfos) { List<SysUser> sysUsers = new ArrayList<>(); List<MesStaff> mesStaffs = new ArrayList<>(); for (EmployeeInfo employeeInfo : employeeInfos) { MesStaff mesStaff = getMesStaff(employeeInfo); SysUser user = getUser(employeeInfo, mesStaff.getId()); sysUsers.add(user); mesStaffs.add(mesStaff); } // æ¹éæå ¥ææ´æ° return batchInsert(sysUsers, mesStaffs); } private MesStaff getMesStaff(EmployeeInfo employeeInfo) { MesStaff mesStaff = new MesStaff(); LambdaQueryWrapper<MesStaff> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(MesStaff::getRemark4, employeeInfo.getPersonId()); MesStaff one = getOne(wrapper, false); if (one != null) { mesStaff.setId(one.getId()); } mesStaff.setStaffNo(employeeInfo.getEmployeeId()); mesStaff.setStaffName(employeeInfo.getTrueName()); mesStaff.setPositionCode(employeeInfo.getNames()); mesStaff.setKeyPosts("å¦"); if (employeeInfo.getIsCore() != null && employeeInfo.getIsCore() == 1) { mesStaff.setKeyPosts("æ¯"); } // å¤çæ¥æåæ®µ try { if (StrUtil.isNotEmpty(employeeInfo.getAttendOnDate())) { Date startDate = sdf.parse(employeeInfo.getAttendOnDate()); mesStaff.setStartDate(startDate); } if (StrUtil.isNotEmpty(employeeInfo.getDimissionDate())) { Date separationTime = sdf.parse(employeeInfo.getDimissionDate()); mesStaff.setSeparationTime(separationTime); } } catch (ParseException e) { throw new RuntimeException("æ¥ææ ¼å¼ä¸æ£ç¡®", e); } // èµå¼å ¶ä»ä¿¡æ¯ // mesStaff.setFforbidStatus("1"); // if ("离è".equals(employeeInfo.getState()) || "éä¼".equals(employeeInfo.getState())) { // mesStaff.setFforbidStatus("0"); // } mesStaff.setFforbidStatus(employeeInfo.getState()); mesStaff.setDepartmentName(employeeInfo.getUnitName()); mesStaff.setRemark(StrUtil.isNotEmpty(employeeInfo.getLaowugongsi()) ? "æ´¾é£å·¥" : "æ£å¼å·¥"); mesStaff.setRemark3(employeeInfo.getCUnitName()); mesStaff.setRemark4(employeeInfo.getPersonId()); return mesStaff; } private SysUser getUser(EmployeeInfo staff, Long id) { SysUser sysUser = new SysUser(); LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SysUser::getFcode, staff.getEmployeeId()).eq(SysUser::getFname, staff.getTrueName()); SysUser one = sysUserService.getOne(wrapper, false); if (one == null) { // æ å°åå·¥ID sysUser.setSid(id); } else { sysUser.setSid(one.getSid()); sysUser.setFid(one.getFid()); } // æ å°åå·¥ç¼å· sysUser.setFcode(staff.getEmployeeId()); // æ å°åå·¥å§å sysUser.setFname(staff.getTrueName()); // 设置åå§å¯ç sysUser.setFpassword("8+()./,"); // 设置æéçº§å« sysUser.setLever(0); // è®¾ç½®å ¬å¸ä»£ç sysUser.setFcompany("1000"); // 设置工å代ç sysUser.setFfactory("1000"); // 设置å 餿 å¿ sysUser.setDelFlag(0L); // 设置设å¤ç¸å ³æ å¿ sysUser.setDev(0); // 设置æµè¯ç¸å ³æ å¿ sysUser.setTet(0); // 设置ç产ç¸å ³æ å¿ sysUser.setPrd(1); // è®¾ç½®ç®¡çæ å¿ sysUser.setIsmanager(0); // 设置æ¶è´æ å¿ sysUser.setIsacq(0); // 设置æ©å±å段 sysUser.setExpField9("1020"); // è®¾ç½®è´¨éæ£æµç¨æ·æ å¿ sysUser.setQmUser(0); // è®¾ç½®ç¨æ·ç¶æ sysUser.setStatus(0); // è®¾ç½®ç¦»èæ å¿ sysUser.setIsdeparture(0); // è®¾ç½®æ£æ¥æ å¿ sysUser.setCheckFlag(0L); // 设置æ©å±å段12 sysUser.setExpFiel12(0L); // è®¾ç½®é¦æ¬¡ç»å½æ å¿ sysUser.setFirstLogin(0); // 设置åå»ºæ¥æ sysUser.setCreateDate(new Date()); // 设置å¯ç ä¿®æ¹æ¶é´ sysUser.setPswEditTime(new Date()); return sysUser; } private boolean batchInsert(List<SysUser> sysUsers, List<MesStaff> mesStaffs) { // æ¹éæ£æ¥ SysUser æ¯å¦åå¨ List<Long> sysUserSids = sysUsers.stream().map(SysUser::getSid).collect(Collectors.toList()); LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>(); wrapper.in(SysUser::getSid, sysUserSids); List<SysUser> existingUsers = sysUserService.list(wrapper); // å离éè¦æå ¥çæ°ç¨æ· List<SysUser> newUserList = sysUsers.stream().filter(user -> existingUsers.stream().noneMatch(e -> e.getSid().equals(user.getSid()))).collect(Collectors.toList()); // æ¹éæå ¥æ°ç¨æ· if (!newUserList.isEmpty()) { sysUserService.saveBatch(newUserList); } // æ¹éå 餿§ç MesStaff è®°å½ //baseMapper.deleteStaff(); // æ¹éæå ¥æ°ç MesStaff è®°å½ if (!mesStaffs.isEmpty()) { saveBatch(mesStaffs); } //baseMapper.updateStaff(); return true; } @Override public boolean UpdateStaff(List<EmployeeInfo> employeeInfos) { List<SysUser> sysUsers = new ArrayList<>(); List<MesStaff> mesStaffs = new ArrayList<>(); for (EmployeeInfo employeeInfo : employeeInfos) { MesStaff mesStaff = getMesStaff(employeeInfo); SysUser user = getUser(employeeInfo, mesStaff.getId()); sysUsers.add(user); mesStaffs.add(mesStaff); } // æ¹éæå ¥ææ´æ° boolean b = saveOrUpdateBatch(mesStaffs) && sysUserService.saveOrUpdateBatch(sysUsers); baseMapper.updateStaff(); return b; } } src/main/java/com/gs/xky/service/Impl/SysUserServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.gs.xky.service.Impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.entity.SysUser; import com.gs.xky.mapper.SysUserMapper; import com.gs.xky.service.SysUserService; import org.springframework.stereotype.Service; /** * @author 28567 * @description é对表ãSYS_USERãçæ°æ®åºæä½Serviceå®ç° * @createDate 2025-02-17 21:00:07 */ @Service public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService { } src/main/java/com/gs/xky/service/MesStaffService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.dto.EmployeeInfo; import com.gs.xky.entity.MesStaff; import java.util.List; /** * @author 28567 * @description é对表ãMES_STAFF(å工信æ¯è¡¨)ãçæ°æ®åºæä½Service * @createDate 2025-02-17 20:59:36 */ public interface MesStaffService extends IService<MesStaff> { boolean SaveStaff(List<EmployeeInfo> employeeInfos); boolean UpdateStaff(List<EmployeeInfo> employeeInfos); } src/main/java/com/gs/xky/service/SysUserService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.gs.xky.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gs.xky.entity.SysUser; /** * @author 28567 * @description é对表ãSYS_USERãçæ°æ®åºæä½Service * @createDate 2025-02-17 21:00:07 */ public interface SysUserService extends IService<SysUser> { } src/main/java/com/gs/xky/service/XkyService.java
@@ -44,7 +44,7 @@ XkyCommonParam param = XkyCommonParam.GetInit(); // 计ç®äºåéåçæ¶é´æ³ long startDate = currentTimeMillis - (6 * 60 * 1000); // 5 åé = 5 * 60 * 1000 æ¯«ç§ long startDate = currentTimeMillis - (20 * 60 * 1000); // 5 åé = 5 * 60 * 1000 æ¯«ç§ // å建 BodyParam 对象并èµå¼ BodyParam bodyParam = new BodyParam(); src/main/java/com/gs/xky/task/ScheduledTasks.java
@@ -1,18 +1,30 @@ package com.gs.xky.task; import cn.hutool.core.collection.ListUtil; import com.gs.xky.config.DingTalkParam; import com.gs.xky.config.DingTalkResponse; import com.gs.xky.dto.EmployeeInfo; import com.gs.xky.service.ApiService; import com.gs.xky.service.MesStaffService; import com.gs.xky.service.XkyService; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class ScheduledTasks { private final XkyService xkyService; private final ApiService apiService; private final MesStaffService staffService; /** * æ¯äºåéæ§è¡ä¸æ¬¡ @@ -27,4 +39,19 @@ public void getDeviceRealTimeData() throws IOException { xkyService.GetSaveDetail(); } @Scheduled(cron = "0 0 0/1 * * ?") public void getDinTalkData() throws IOException { DingTalkParam dingTalkParam = new DingTalkParam(1); DingTalkResponse<EmployeeInfo> employeeInfoDingTalkResponse = apiService.sendListRequest(dingTalkParam, EmployeeInfo.class, "http://192.168.1.64/eHR/eHRExternalService/Service.ashx"); List<EmployeeInfo> collect = employeeInfoDingTalkResponse.getData().stream().filter(s -> "é æ¢¦è ï¼æµæ±ï¼ç§ææéå ¬å¸".equals(s.getCUnitName())).collect(Collectors.toList()); System.out.println(collect.size()); List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 100); partition.forEach(staffService::UpdateStaff); } } src/main/resources/mapper/MesStaffMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.MesStaffMapper"> <update id="updateStaff"> update SYS_USER a set SID = (select ID from MES_STAFF where STAFF_NO = a.FCODE and STAFF_NAME = a.FNAME) where 1 = 1 </update> <delete id="deleteStaff"> delete from MES_STAFF where 1 = 1 </delete> <select id="getNextVal" resultType="java.lang.Long"> select SEQ_MES_STAFF.NextVal from dual </select> </mapper> src/main/resources/mapper/SysUserMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.gs.xky.mapper.SysUserMapper"> </mapper> src/test/java/com/gs/xky/XkyApplicationTests.java
@@ -1,18 +1,20 @@ package com.gs.xky; import cn.hutool.core.collection.ListUtil; import com.alibaba.fastjson2.JSON; import com.gs.xky.config.ApiResponse; import com.gs.xky.config.BodyParam; import com.gs.xky.config.DataAcquisitionConfiguration; import com.gs.xky.config.XkyCommonParam; import com.gs.xky.config.*; import com.gs.xky.dto.EmployeeInfo; import com.gs.xky.dto.XkyDetail; import com.gs.xky.service.ApiService; import com.gs.xky.service.MesStaffService; import com.gs.xky.service.XkyService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.io.IOException; import java.util.List; import java.util.stream.Collectors; @SpringBootTest class XkyApplicationTests { @@ -23,6 +25,9 @@ @Autowired private ApiService apiService; @Autowired private MesStaffService staffService; @Test void contextLoads() throws IOException { @@ -47,4 +52,42 @@ System.out.println(JSON.toJSONString(noList.getData())); } @Test void cs1() throws IOException { DingTalkParam dingTalkParam = new DingTalkParam(); DingTalkResponse<EmployeeInfo> employeeInfoDingTalkResponse = apiService.sendListRequest(dingTalkParam, EmployeeInfo.class, "http://192.168.1.64/eHR/eHRExternalService/Service.ashx"); //é æ¢¦è ï¼æµæ±ï¼ç§ææéå ¬å¸ cUnitName //http://192.168.1.64/eHR List<EmployeeInfo> collect = employeeInfoDingTalkResponse.getData().stream().filter(s -> "é æ¢¦è ï¼æµæ±ï¼ç§ææéå ¬å¸".equals(s.getCUnitName())).collect(Collectors.toList()); System.out.println(collect.size()); List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 500); partition.forEach(list -> { staffService.SaveStaff(list); }); } @Test void cs2() throws IOException { DingTalkParam dingTalkParam = new DingTalkParam(1); DingTalkResponse<EmployeeInfo> employeeInfoDingTalkResponse = apiService.sendListRequest(dingTalkParam, EmployeeInfo.class, "http://192.168.1.64/eHR/eHRExternalService/Service.ashx"); //é æ¢¦è ï¼æµæ±ï¼ç§ææéå ¬å¸ cUnitName //http://192.168.1.64/eHR List<EmployeeInfo> collect = employeeInfoDingTalkResponse.getData().stream().filter(s -> "é æ¢¦è ï¼æµæ±ï¼ç§ææéå ¬å¸".equals(s.getCUnitName())).collect(Collectors.toList()); System.out.println(collect.size()); List<List<EmployeeInfo>> partition = ListUtil.partition(collect, 100); partition.forEach(list -> { staffService.UpdateStaff(list); }); } }