verguenza 5 anni fa
parent
commit
6d35b19cc9

+ 3 - 2
src/main/java/com/galaxis/manatee/dao/ChuanyunMaterialDao.java

@@ -15,9 +15,10 @@ import java.util.Optional;
 public interface ChuanyunMaterialDao extends GalaxisRepository<ChuanyunMaterialDO,String> {
 
     /**
-     * 根据物料编码获取物料对象
+     * 根据物料编码和版本号获得物料对象
      * @param code  物料编码
+     * @param version   版本
      * @return  物料对象
      */
-    Optional<ChuanyunMaterialDO> findByCode(String code);
+    Optional<ChuanyunMaterialDO> findByCodeAndVersion(String code,String version);
 }

+ 2 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunMaterialDO.java

@@ -88,6 +88,8 @@ public class ChuanyunMaterialDO extends BasicDO{
         ChuanyunMaterialDO chuanyunMaterialDO =new ChuanyunMaterialDO();
         BeanUtils.copyProperties(materialDTO, chuanyunMaterialDO);
         chuanyunMaterialDO.setObjectId(UUID.randomUUID().toString());
+        chuanyunMaterialDO.setTitle(materialDTO.getName());
+        chuanyunMaterialDO.setName(materialDTO.getName()+"\t"+materialDTO.getCode());
         return chuanyunMaterialDO;
     }
 }

+ 19 - 5
src/main/java/com/galaxis/manatee/service/ChuanyunScheduledTask.java

@@ -82,16 +82,17 @@ public class ChuanyunScheduledTask {
         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){
+            List<ChuanyunMaterialDO> toSave=new ArrayList<>();
             //获取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()){
+                Optional<ChuanyunMaterialDO> optionalChuanyunMaterialDO=chuanyunMaterialDao.findByCodeAndVersion(materialDTO.getCode(),materialDTO.getVersion());
+                if (optionalChuanyunMaterialDO.isEmpty()){
                     ChuanyunMaterialDO chuanyunMaterialDO=ChuanyunMaterialDO.fromMaterialDTO(materialDTO);
                     chuanyunMaterialList.add(chuanyunMaterialDO);
                     toSave.add(chuanyunMaterialDO);
@@ -100,9 +101,20 @@ public class ChuanyunScheduledTask {
             chuanyunMaterialDao.saveAll(chuanyunMaterialList);
             totalAmount+=chuanyunMaterialList.size();
             page++;
+            parameters.put("page",Integer.toString(page));
+            log.info("共"+totalPage+"页,当前第"+page+"页,更新了"+chuanyunMaterialList.size()+"条数据");
+            //将更新的的物料信息同步到氚云
+            putMaterialToChuanyun(toSave);
         }
         log.info("更新U9物料数据结束,共更新数据"+totalAmount);
 
+    }
+
+    /**
+     * 用于将需要更新的数据同步到氚云
+     * @param toSave    待保存的数据集合
+     */
+    private void putMaterialToChuanyun(List<ChuanyunMaterialDO> toSave){
         ObjectMapper objectMapper=new ObjectMapper();
         List<String> toSaveString=new ArrayList<>();
         toSave.forEach(chuanyunMaterialDO -> {
@@ -115,12 +127,13 @@ public class ChuanyunScheduledTask {
         });
         //将新增加的数据更新到氚云
         chuanYunManager.saveAll(ChuanyunMaterialDO.SCHEMA_CODE,toSaveString,true);
+        log.info("物料信息更新到氚云"+toSave.size());
     }
 
     /**
      * 定时将物料信息从氚云中同步
      */
-    @Scheduled(fixedDelay = 86400000L)
+    @Scheduled(fixedDelay = 86400000L,initialDelay = 43200000L)
     private void getMaterialFromChuanyun(){
         var pageSize=100;
         var start=0;
@@ -146,6 +159,7 @@ public class ChuanyunScheduledTask {
                 //保存
                 result.removeIf(chuanyunMaterialDO -> chuanyunMaterialDao.findById(chuanyunMaterialDO.getObjectId()).isPresent());
                 chuanyunMaterialDao.saveAll(result);
+                log.info("保存物料信息"+result.size());
                 totalCount+=result.size();
             }catch (Exception e){
                 log.error(e.getMessage());
@@ -167,7 +181,7 @@ public class ChuanyunScheduledTask {
      */
     @Scheduled(fixedDelay = 600000L,initialDelay = 10000L)
     private void putDataToClaw(){
-        putProjectToClaw();
+//        putProjectToClaw();
     }
 
     /**