|
@@ -6,12 +6,15 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
|
import com.galaxis.capsule.bo.ChuanyunObject;
|
|
|
+import com.galaxis.capsule.dto.MaterialDTO;
|
|
|
import com.galaxis.manatee.constant.ChuanYunConstant;
|
|
|
import com.galaxis.manatee.constant.DingTalkConstant;
|
|
|
import com.galaxis.manatee.constant.StringConstant;
|
|
|
+import com.galaxis.manatee.dao.ChuanyunMaterialDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunUserDao;
|
|
|
import com.galaxis.manatee.dao.DingTalkProcessInstanceDao;
|
|
|
import com.galaxis.manatee.dao.ChuanyunProjectDao;
|
|
|
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMaterialDO;
|
|
|
import com.galaxis.manatee.entity.chuanyun.dto.*;
|
|
|
import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectDO;
|
|
|
import com.galaxis.manatee.entity.chuanyun.bo.MaterialResendBO;
|
|
@@ -29,8 +32,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author zcj
|
|
@@ -44,13 +46,15 @@ public class ChuanyunScheduledTask {
|
|
|
private final ChuanYunManager chuanYunManager;
|
|
|
private final ChuanyunProjectDao chuanyunProjectDao;
|
|
|
private final ChuanyunUserDao chuanyunUserDao;
|
|
|
+ private final ChuanyunMaterialDao chuanyunMaterialDao;
|
|
|
private final DingTalkProcessInstanceDao dingTalkProcessInstanceDao;
|
|
|
private final ClawFeign clawFeign;
|
|
|
|
|
|
- public ChuanyunScheduledTask(ChuanYunManager chuanYunManager, ChuanyunProjectDao chuanyunProjectDao, ChuanyunUserDao chuanyunUserDao, DingTalkProcessInstanceDao dingTalkProcessInstanceDao, ClawFeign clawFeign) {
|
|
|
+ public ChuanyunScheduledTask(ChuanYunManager chuanYunManager, ChuanyunProjectDao chuanyunProjectDao, ChuanyunUserDao chuanyunUserDao, ChuanyunMaterialDao chuanyunMaterialDao, DingTalkProcessInstanceDao dingTalkProcessInstanceDao, ClawFeign clawFeign) {
|
|
|
this.chuanYunManager = chuanYunManager;
|
|
|
this.chuanyunProjectDao = chuanyunProjectDao;
|
|
|
this.chuanyunUserDao = chuanyunUserDao;
|
|
|
+ this.chuanyunMaterialDao = chuanyunMaterialDao;
|
|
|
this.dingTalkProcessInstanceDao = dingTalkProcessInstanceDao;
|
|
|
this.clawFeign = clawFeign;
|
|
|
}
|
|
@@ -58,7 +62,7 @@ public class ChuanyunScheduledTask {
|
|
|
/**
|
|
|
* 定时将氚云中的数据保存到manatee
|
|
|
*/
|
|
|
- @Scheduled(fixedDelay = 300000L)
|
|
|
+ @Scheduled(fixedDelay = 43200000L)
|
|
|
private void getDataFromChuanyun(){
|
|
|
//获取用户数据
|
|
|
getUserListFromChuanyun();
|
|
@@ -66,24 +70,89 @@ public class ChuanyunScheduledTask {
|
|
|
getProjectInformationFromChuanyun();
|
|
|
}
|
|
|
|
|
|
- private void getUserListFromChuanyun() {
|
|
|
- ChuanyunFindAllDTO chuanyunFindAllDTO=chuanYunManager.findAll(ChuanyunUserDO.APP_CODE,ChuanyunUserDO.ACTION_NAME,ChuanyunUserDO.CONTROLLER);
|
|
|
+ /**
|
|
|
+ * 将U9中物料信息更新到氚云
|
|
|
+ */
|
|
|
+ @Scheduled(fixedDelay = 86400000L)
|
|
|
+ private void putMaterialToChuanyun(){
|
|
|
+ int page=1;
|
|
|
+ int size=50;
|
|
|
+ var totalAmount=0;
|
|
|
+ var totalPage=Integer.MAX_VALUE;
|
|
|
+ Map<String,String> parameters=new HashMap<>(2);
|
|
|
+ parameters.put("page", Integer.toString(page));
|
|
|
+ parameters.put("size", Integer.toString(size));
|
|
|
+ List<ChuanyunMaterialDO> toSave=new ArrayList<>();
|
|
|
+ while (page<=totalPage){
|
|
|
+ //获取U9中的物料数据
|
|
|
+ Page<MaterialDTO> result=clawFeign.findMaterialPageable(parameters);
|
|
|
+ totalPage=result.getTotalPages();
|
|
|
+ List<ChuanyunMaterialDO> chuanyunMaterialList=new ArrayList<>();
|
|
|
+ //遍历获取的数据,如果系统中已经存在就不进行保存
|
|
|
+ result.getContent().forEach(materialDTO -> {
|
|
|
+ Optional<ChuanyunMaterialDO> optionalChuanyunMaterialDO=chuanyunMaterialDao.findByCode(materialDTO.getCode());
|
|
|
+ if (!optionalChuanyunMaterialDO.isPresent()){
|
|
|
+ ChuanyunMaterialDO chuanyunMaterialDO=ChuanyunMaterialDO.fromMaterialDTO(materialDTO);
|
|
|
+ chuanyunMaterialList.add(chuanyunMaterialDO);
|
|
|
+ toSave.add(chuanyunMaterialDO);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ chuanyunMaterialDao.saveAll(chuanyunMaterialList);
|
|
|
+ totalAmount+=chuanyunMaterialList.size();
|
|
|
+ page++;
|
|
|
+ }
|
|
|
+ log.info("更新U9物料数据结束,共更新数据"+totalAmount);
|
|
|
+
|
|
|
ObjectMapper objectMapper=new ObjectMapper();
|
|
|
- Integer totalCount=0;
|
|
|
- try {
|
|
|
- List<ChuanyunUserDO> userList=objectMapper.readValue(chuanyunFindAllDTO.getReturnData().getData(),new TypeReference<>(){});
|
|
|
- userList.forEach(chuanyunUserDO -> {
|
|
|
- if(StringUtils.isEmpty(chuanyunUserDO.getEmployeeNumber())){
|
|
|
- ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(),"");
|
|
|
+ List<String> toSaveString=new ArrayList<>();
|
|
|
+ toSave.forEach(chuanyunMaterialDO -> {
|
|
|
+ try {
|
|
|
+ toSaveString.add(objectMapper.writeValueAsString(chuanyunMaterialDO));
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ log.info(chuanyunMaterialDO+"");
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //将新增加的数据更新到氚云
|
|
|
+ chuanYunManager.saveAll(ChuanyunMaterialDO.SCHEMA_CODE,toSaveString,true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 定时将物料信息从氚云中同步
|
|
|
+ */
|
|
|
+ @Scheduled(fixedDelay = 86400000L)
|
|
|
+ private void getMaterialFromChuanyun(){
|
|
|
+ var pageSize=100;
|
|
|
+ var start=0;
|
|
|
+ var totalCount=0L;
|
|
|
+ var flag=true;
|
|
|
+ while (flag){
|
|
|
+ try {
|
|
|
+ //从氚云查询数据
|
|
|
+ var filter=Filter.instance(start,start+pageSize,true);
|
|
|
+ var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMaterialDO.SCHEMA_CODE,filter);
|
|
|
+ if(chuanyunFindAllResponse.getReturnData()==null){
|
|
|
+ flag=false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(chuanyunFindAllResponse.getReturnData().getTotalCount()>=start+pageSize){
|
|
|
+ start+=pageSize;
|
|
|
}else{
|
|
|
- ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(),chuanyunUserDO.getEmployeeNumber());
|
|
|
+ flag=false;
|
|
|
}
|
|
|
- });
|
|
|
- totalCount=chuanyunUserDao.saveAll(userList).size();
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+ //转化为POJO
|
|
|
+ var objectMapper=new ObjectMapper();
|
|
|
+ List<ChuanyunMaterialDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
+ //保存
|
|
|
+ result.removeIf(chuanyunMaterialDO -> chuanyunMaterialDao.findById(chuanyunMaterialDO.getObjectId()).isPresent());
|
|
|
+ chuanyunMaterialDao.saveAll(result);
|
|
|
+ totalCount+=result.size();
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error(e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
- log.info("用户信息保存保存"+totalCount+"工号映射更新完成");
|
|
|
+ log.info("物料信息保存保存"+totalCount);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -161,8 +230,8 @@ public class ChuanyunScheduledTask {
|
|
|
while (flag){
|
|
|
try {
|
|
|
//从氚云查询数据
|
|
|
- Filter filter=Filter.instance(start,start+20,true);
|
|
|
- ChuanyunFindAllBizDTO<ChuanyunProjectDO> chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectDO.SCHEMA_CODE,filter);
|
|
|
+ var filter=Filter.instance(start,start+20,true);
|
|
|
+ var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectDO.SCHEMA_CODE,filter);
|
|
|
if(chuanyunFindAllResponse.getReturnData()==null){
|
|
|
flag=false;
|
|
|
continue;
|
|
@@ -173,7 +242,7 @@ public class ChuanyunScheduledTask {
|
|
|
flag=false;
|
|
|
}
|
|
|
//转化为POJO
|
|
|
- ObjectMapper objectMapper=new ObjectMapper();
|
|
|
+ var objectMapper=new ObjectMapper();
|
|
|
List<ChuanyunProjectDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
|
|
|
//更新缓存中的项目映射表
|
|
|
result.forEach(projectBO -> ChuanYunConstant.PROJECT_CODE.put(projectBO.getProjectCode(),projectBO.getObjectId()));
|
|
@@ -252,4 +321,24 @@ public class ChuanyunScheduledTask {
|
|
|
currentPage++;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void getUserListFromChuanyun() {
|
|
|
+ var chuanyunFindAllDTO=chuanYunManager.findAll(ChuanyunUserDO.APP_CODE,ChuanyunUserDO.ACTION_NAME,ChuanyunUserDO.CONTROLLER);
|
|
|
+ var objectMapper=new ObjectMapper();
|
|
|
+ var totalCount=0;
|
|
|
+ try {
|
|
|
+ List<ChuanyunUserDO> userList=objectMapper.readValue(chuanyunFindAllDTO.getReturnData().getData(),new TypeReference<>(){});
|
|
|
+ userList.forEach(chuanyunUserDO -> {
|
|
|
+ if(StringUtils.isEmpty(chuanyunUserDO.getEmployeeNumber())){
|
|
|
+ ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(),"");
|
|
|
+ }else{
|
|
|
+ ChuanYunConstant.USER_EMPLOYEE_NUMBER.put(chuanyunUserDO.getObjectId(),chuanyunUserDO.getEmployeeNumber());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ totalCount=chuanyunUserDao.saveAll(userList).size();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ log.info("用户信息保存保存"+totalCount+"工号映射更新完成");
|
|
|
+ }
|
|
|
}
|