diff --git a/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java b/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java index 561bc5dbc1c3d3d8c0d97365caaba124c5ba5238..b852d0dff44447ad781318b631133aee44cb043a 100644 --- a/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java +++ b/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java @@ -56,7 +56,8 @@ public class SyncSiteDeviceTaskImpl implements ITaskExcuteService { syncDevice(); log.info("寮€濮嬪悓姝ョ毊鑲ゅ垪琛紒"); - syncSkin(); + skinService.syncSkin(); + //syncSkin(); log.info("缁撴潫鍚屾鐨偆鍒楄〃锛�"); } diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java index 2265713e05f2d5ebc5411654995f0a9698ed34d7..4d318011e87c2baba789c841fe2239be88999361 100644 --- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java +++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java @@ -11,4 +11,6 @@ import com.mortals.xhx.module.skin.model.SkinEntity; */ public interface SkinService extends ICRUDService<SkinEntity,Long>{ + void syncSkin(); + } \ No newline at end of file diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java index 77c2211e7d46817e325229ef2cb05e77a7fa930a..476b624ccb64c2398129f31faded7ff1eb239fc4 100644 --- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java +++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java @@ -1,14 +1,29 @@ package com.mortals.xhx.module.skin.service.impl; +import cn.hutool.core.util.StrUtil; +import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.common.pdu.RespData; +import com.mortals.xhx.common.pdu.skin.SkinBasePdu; +import com.mortals.xhx.common.utils.BeanUtil; +import com.mortals.xhx.feign.skin.ISkinBaseFeign; import com.mortals.xhx.module.skin.dao.SkinDao; import com.mortals.xhx.module.skin.model.SkinEntity; +import com.mortals.xhx.module.skin.model.SkinQuery; import com.mortals.xhx.module.skin.service.SkinService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * SkinService @@ -22,6 +37,9 @@ import org.springframework.stereotype.Service; public class SkinServiceImpl extends AbstractCRUDServiceImpl<SkinDao, SkinEntity, Long> implements SkinService { + @Autowired + private ISkinBaseFeign skinBaseFeign; + @Override protected void updateBefore(SkinEntity entity, Context context) throws AppException { super.updateBefore(entity, context); @@ -37,4 +55,79 @@ public class SkinServiceImpl extends AbstractCRUDServiceImpl<SkinDao, SkinEntity } } + + + @Override + public void syncSkin() { + SkinBasePdu skinBasePdu = new SkinBasePdu(); + skinBasePdu.setProductName("鏍疯〃鏈�"); + skinBasePdu.setSize(-1); + + Rest<RespData<List<SkinBasePdu>>> skinBaseRest = skinBaseFeign.list(skinBasePdu); + if (skinBaseRest.getCode() == YesNoEnum.YES.getValue()) { + List<SkinBasePdu> skinBasePduList = skinBaseRest.getData().getData(); + log.info("鏍疯〃鏈虹毊鑲ゆ€绘暟閲忥細{}", skinBasePduList.size()); + if (!ObjectUtils.isEmpty(skinBasePduList)) { + List<SkinEntity> newSkinList = skinBasePduList.stream().map(newSkin -> { + SkinEntity skinEntity = new SkinEntity(); + skinEntity.initAttrValue(); + //瀛樼浉瀵瑰湴鍧€ + newSkin.setCssFilePath("/"+ StrUtil.subAfter(newSkin.getCssFilePath(), "/", true)); + newSkin.setPreviewImagePath("/"+StrUtil.subAfter(newSkin.getPreviewImagePath(), "/", true)); + BeanUtils.copyProperties(newSkin, skinEntity, BeanUtil.getNullPropertyNames(newSkin)); + return skinEntity; + }).collect(Collectors.toList()); + + List<SkinEntity> oldSkinList = this.find(new SkinQuery()); + Map<Long, SkinEntity> oldSkinMap = oldSkinList.stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)); + Map<Long, SkinEntity> newSkinMap = newSkinList.stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)); + + List<SkinEntity> updateSkinLsit = newSkinList.stream().map(item -> { + if (oldSkinMap.containsKey(item.getId())) { + item.setUsed(oldSkinMap.get(item.getId()).getUsed()); + item.setUpdateTime(new Date()); + return item; + } + return null; + }).filter(f -> f != null).collect(Collectors.toList()); + + List<SkinEntity> saveSkinList = newSkinList.stream().map(item -> { + if (!oldSkinMap.containsKey(item.getId())) { + item.setCreateUserId(1L); + item.setCreateUserName("绯荤粺绠$悊鍛�"); + item.setCreateTime(new Date()); + return item; + } + return null; + }).filter(f -> f != null).collect(Collectors.toList()); + + + //鍋氬樊闆� + List<Long> delSkinList = oldSkinList.stream().map(item -> { + if (!newSkinMap.containsKey(item.getId())) { + return item.getId(); + } + return null; + }).filter(f -> f != null).collect(Collectors.toList()); + + +// if (!ObjectUtils.isEmpty(updateSkinLsit)) { +// log.info("鐨偆鏇存柊锛宻ize:{}", updateSkinLsit.size()); +// skinService.update(updateSkinLsit); +// } + + if (!ObjectUtils.isEmpty(saveSkinList)) { + log.info("鐨偆鏂板锛宻ize:{}", saveSkinList.size()); + this.save(saveSkinList); + } + + if (!ObjectUtils.isEmpty(delSkinList)) { + log.info("鐨偆鍒犻櫎锛宻ize:{}", delSkinList.size()); + this.remove(delSkinList, null); + } + + } + } + } + } \ No newline at end of file diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java index 4da7ac1b54dcecfd4f2f6870aa83aaf19e504772..5d6c78db6e69e872457b2e1db754f582251e4af0 100644 --- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java +++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java @@ -1,6 +1,7 @@ package com.mortals.xhx.module.skin.web; import com.alibaba.fastjson.JSON; +import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; @@ -12,6 +13,7 @@ import com.mortals.xhx.module.skin.model.SkinEntity; import com.mortals.xhx.module.skin.service.SkinService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -61,4 +63,13 @@ public class SkinController extends BaseCRUDJsonBodyMappingController<SkinServic return super.saveAfter(entity, model, context); } + + + @PostMapping({"refreshSkin"}) + @UnAuth + public Rest<Object> refreshSkin() { + log.info("鍒锋柊鐨偆"); + this.service.syncSkin(); + return Rest.ok("鐨偆鍒锋柊鎿嶄綔鎴愬姛"); + } } \ No newline at end of file