From a87b60005041a36114125d001483d336f0f56792 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 22 Jul 2022 23:31:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E5=B7=A5=E4=BD=9C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BD=8D=E7=BD=AE=20=E8=BF=98=E5=8E=9F=E5=8E=9F?= =?UTF-8?q?=E6=9C=89=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OpenDataPatrolChangeEventListener.java | 4 +- .../service/BaseGridDailyworkService.java | 17 -- .../GridstaffWorkInfoPingyinService.java | 12 +- .../impl/BaseGridDailyworkServiceImpl.java | 166 +++--------------- .../GridstaffWorkInfoPingyinServiceImpl.java | 134 +++++++++++++- 5 files changed, 165 insertions(+), 168 deletions(-) diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java index e5e7a1f577..5c3bbb4404 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java @@ -15,7 +15,7 @@ import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.SpringContextUtils; import com.epmet.constant.SystemMessageType; import com.epmet.opendata.dto.form.UpsertPatrolRecordForm; -import com.epmet.opendata.service.BaseGridDailyworkService; +import com.epmet.opendata.service.GridstaffWorkInfoPingyinService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; @@ -99,7 +99,7 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr break; case SystemMessageType.PATROL_ROUTINE_WORK_ADD: // aBoolean = SpringContextUtils.getBean(BaseGridDailyworkService.class).insertBaseGridWorkRecord(patrolRecordForm); - aBoolean = SpringContextUtils.getBean(BaseGridDailyworkService.class).insertBaseGridWorkRecordV2(patrolRecordForm); + aBoolean = SpringContextUtils.getBean(GridstaffWorkInfoPingyinService.class).insertBaseGridWorkRecordV2(patrolRecordForm); break; default: log.error("错误的消息类型:{}", tags); diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/BaseGridDailyworkService.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/BaseGridDailyworkService.java index 6fccfe29e7..010b698d63 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/BaseGridDailyworkService.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/BaseGridDailyworkService.java @@ -18,7 +18,6 @@ package com.epmet.opendata.service; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.opendata.dto.form.HistoryDataSyncFormDTO; import com.epmet.opendata.dto.form.UpsertPatrolRecordForm; import com.epmet.opendata.entity.BaseGridDailyworkEntity; @@ -37,14 +36,6 @@ public interface BaseGridDailyworkService extends BaseService { + /** + * Desc: 2022-07-22 新表 例行工作同步 + * @param formDTO + * @author zxc + * @date 2022/7/22 11:16 + */ + Boolean insertBaseGridWorkRecordV2(UpsertPatrolRecordForm formDTO); - Integer delAllGridStaffWorkInfoPY(); - -} \ No newline at end of file +} diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridDailyworkServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridDailyworkServiceImpl.java index c02ed2d50f..b8232b5ca1 100644 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridDailyworkServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseGridDailyworkServiceImpl.java @@ -1,3 +1,20 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + package com.epmet.opendata.service.impl; import com.alibaba.fastjson.JSON; @@ -6,12 +23,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; -import com.epmet.commons.tools.redis.common.CustomerOrgRedis; -import com.epmet.commons.tools.redis.common.bean.GridInfoCache; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.commons.tools.utils.StrUtil; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.dto.form.patrol.PatrolQueryFormDTO; @@ -20,18 +32,15 @@ import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.opendata.dao.BaseGridDailyworkDao; import com.epmet.opendata.dto.ExDeptDTO; import com.epmet.opendata.dto.ExUserDTO; -import com.epmet.opendata.dto.form.HistoryDataSyncFormDTO; import com.epmet.opendata.dto.form.UpsertPatrolRecordForm; import com.epmet.opendata.entity.BaseGridDailyworkEntity; -import com.epmet.opendata.entity.GridstaffWorkInfoPingyinEntity; -import com.epmet.opendata.service.*; +import com.epmet.opendata.service.BaseGridDailyworkService; +import com.epmet.opendata.service.ExDeptService; +import com.epmet.opendata.service.ExUserService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.ListUtils; -import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.ArrayList; @@ -55,12 +64,6 @@ public class BaseGridDailyworkServiceImpl extends BaseServiceImpl list, Map deptMap, Map userMap){ List insertList = new ArrayList<>(); list.forEach(o-> insertList.add(buildEntity(o, deptMap, userMap))); @@ -128,6 +130,7 @@ public class BaseGridDailyworkServiceImpl extends BaseServiceImpl deptMap, Map userMap) { BaseGridDailyworkEntity entity = new BaseGridDailyworkEntity(); entity.setCustomerId(record.getCustomerId()); @@ -175,132 +178,9 @@ public class BaseGridDailyworkServiceImpl extends BaseServiceImpl data; - do { - Result> record = epmetUserOpenFeignClient.getPatrolRoutineWorkListV2(midPatrolFormDTO); - midPatrolFormDTO.setPageNo(midPatrolFormDTO.getPageNo() + 1); - if (record == null || !record.success()) { - log.error("获取例行工作记录V2失败,param:{}", JSON.toJSONString(midPatrolFormDTO)); - throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode()); - } - data = record.getData(); - if (CollectionUtils.isEmpty(data)) { - //数据已被删除了 - //暂时设置error 用于排错 - log.error("获取例行工作记录返回为空,param:{}", JSON.toJSONString(midPatrolFormDTO)); - int effectRow = baseDao.deleteById(patrolRecordForm.getId()); - log.warn("del effectRow:{}", effectRow); - throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode()); - } - data.forEach(d -> { - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(d.getGridId()); - if (null == gridInfo){ - log.warn("未查询到网格信息:"+ d.getGridId()); - return; - } - String s = StrUtil.filterEmoji(d.getWorkContent()); - d.setWorkContent(s); - d.setGridCode(gridInfo.getCode()); - d.setGridName(gridInfo.getGridName()); - }); - insertNewRecordBatch(data); - - }while (data.size() == NumConstant.ONE_THOUSAND); - return true; - } - - /** - * Desc: 历史数据处理 - * @param formDTO - * @author zxc - * @date 2022/7/22 13:24 - */ - @Override - public void historyDataSync(HistoryDataSyncFormDTO formDTO) { - Integer pageSize = NumConstant.ONE_THOUSAND; - Integer pageNo = NumConstant.ONE; - List baseGridDailyWork; - do { - baseGridDailyWork = baseDao.getBaseGridDailyWork(formDTO.getCustomerId(),(pageNo - NumConstant.ONE) * pageSize); - List newEntities = ConvertUtils.sourceToTarget(baseGridDailyWork, GridstaffWorkInfoPingyinEntity.class); - newEntities.forEach(n -> { - GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(n.getGridId()); - if (null == gridInfo){ - throw new EpmetException("未查询到网格信息:"+ n.getGridId()); - } - n.setGridCode(gridInfo.getCode()); - n.setHappenTime(DateUtils.parseDate(n.getHappenTimeString(),DateUtils.DATE_PATTERN)); - n.setIsDel(NumConstant.ZERO_STR); - }); - insertGridStaffWorkInfoPY(newEntities); - pageNo++; - }while (baseGridDailyWork.size() == NumConstant.ONE_THOUSAND); - } - - /** - * Desc: 数据存入 - * @param newEntities - * @author zxc - * @date 2022/7/22 14:17 - */ - @Transactional(rollbackFor = Exception.class) - public void insertGridStaffWorkInfoPY(List newEntities){ - if (!CollectionUtils.isEmpty(newEntities)){ - List> partition = ListUtils.partition(newEntities, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - pingYinService.insertBatch(p); - }); - } - } - - private Boolean insertNewRecordBatch(List list){ - List insertList = new ArrayList<>(); - list.forEach(o-> { - if (StringUtils.isBlank(o.getGridCode())){ - return; - } - insertList.add(buildNewEntity(o)); - }); - //insert - if (CollectionUtils.isEmpty(insertList)){ - log.error("新构建要插入的数据为空,param:{}", JSON.toJSONString(list)); - return false; - } - insertGridStaffWorkInfoPY(insertList); -// pingYinService.saveOrUpdateBatch(insertList, NumConstant.ONE_HUNDRED); - return true; - } - } diff --git a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridstaffWorkInfoPingyinServiceImpl.java b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridstaffWorkInfoPingyinServiceImpl.java index db80164c1d..ffa08d0286 100755 --- a/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridstaffWorkInfoPingyinServiceImpl.java +++ b/epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/GridstaffWorkInfoPingyinServiceImpl.java @@ -1,10 +1,36 @@ package com.epmet.opendata.service.impl; +import com.alibaba.fastjson.JSON; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.StrUtil; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.commons.tools.validator.group.AddGroup; +import com.epmet.dto.form.patrol.PatrolQueryFormDTO; +import com.epmet.dto.result.PatrolRoutineWorkResult; +import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.opendata.dao.GridstaffWorkInfoPingyinDao; +import com.epmet.opendata.dto.form.UpsertPatrolRecordForm; import com.epmet.opendata.entity.GridstaffWorkInfoPingyinEntity; import com.epmet.opendata.service.GridstaffWorkInfoPingyinService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.ListUtils; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; /** * 平阴区网格员例行工作信息 @@ -12,12 +38,114 @@ import org.springframework.stereotype.Service; * @author generator generator@elink-cn.com * @since v1.0.0 2022-07-22 */ +@Slf4j @Service public class GridstaffWorkInfoPingyinServiceImpl extends BaseServiceImpl implements GridstaffWorkInfoPingyinService { + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; @Override - public Integer delAllGridStaffWorkInfoPY() { - return baseDao.delAllGridStaffWorkInfoPY(); + public Boolean insertBaseGridWorkRecordV2(UpsertPatrolRecordForm patrolRecordForm) { + log.info("insertBaseGridWorkRecordV2 param:{}", JSON.toJSONString(patrolRecordForm)); + ValidatorUtils.validateEntity(patrolRecordForm, AddGroup.class); + // 构建传参 + PatrolQueryFormDTO midPatrolFormDTO = buildParam(patrolRecordForm); + if (StringUtils.isBlank(patrolRecordForm.getId())) { + Integer row; + do { + row = baseDao.delAllGridStaffWorkInfoPY(); + } while (row == NumConstant.ONE_THOUSAND); + } + List data; + do { + Result> record = epmetUserOpenFeignClient.getPatrolRoutineWorkListV2(midPatrolFormDTO); + midPatrolFormDTO.setPageNo(midPatrolFormDTO.getPageNo() + 1); + if (record == null || !record.success()) { + log.error("获取例行工作记录V2失败,param:{}", JSON.toJSONString(midPatrolFormDTO)); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode()); + } + data = record.getData(); + if (CollectionUtils.isEmpty(data)) { + //数据已被删除了 + //暂时设置error 用于排错 + log.error("获取例行工作记录返回为空,param:{}", JSON.toJSONString(midPatrolFormDTO)); + int effectRow = baseDao.deleteById(patrolRecordForm.getId()); + log.warn("del effectRow:{}", effectRow); + throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode()); + } + data.forEach(d -> { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(d.getGridId()); + if (null == gridInfo) { + log.warn("未查询到网格信息:" + d.getGridId()); + return; + } + String s = StrUtil.filterEmoji(d.getWorkContent()); + d.setWorkContent(s); + d.setGridCode(gridInfo.getCode()); + d.setGridName(gridInfo.getGridName()); + }); + insertNewRecordBatch(data); + + } while (data.size() == NumConstant.ONE_THOUSAND); + return true; + } + + /** + * Desc: 数据存入 + * + * @param newEntities + * @author zxc + * @date 2022/7/22 14:17 + */ + @Transactional(rollbackFor = Exception.class) + public void insertGridStaffWorkInfoPY(List newEntities) { + if (!CollectionUtils.isEmpty(newEntities)) { + List> partition = ListUtils.partition(newEntities, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + this.insertBatch(p); + }); + } + } + + private Boolean insertNewRecordBatch(List list) { + List insertList = new ArrayList<>(); + list.forEach(o -> { + if (StringUtils.isBlank(o.getGridCode())) { + return; + } + insertList.add(buildNewEntity(o)); + }); + //insert + if (CollectionUtils.isEmpty(insertList)) { + log.error("新构建要插入的数据为空,param:{}", JSON.toJSONString(list)); + return false; + } + insertGridStaffWorkInfoPY(insertList); + return true; + } + + private GridstaffWorkInfoPingyinEntity buildNewEntity(PatrolRoutineWorkResult record) { + GridstaffWorkInfoPingyinEntity entity = ConvertUtils.sourceToTarget(record, GridstaffWorkInfoPingyinEntity.class); + entity.setQxBm("370124"); + entity.setQxMc("平阴县"); + entity.setHappenTime(DateUtils.parseDate(record.getHappenTime().concat(" 00:00:00"), DateUtils.DATE_PATTERN)); + entity.setWorkResult(NumConstant.ONE == record.getIsNormal() ? "Y" : "N"); + entity.setWorkType(record.getWorkTypeSecondCode()); + entity.setRecoredInsertTime(record.getCreatedTime()); + entity.setUpdateTime(record.getUpdatedTime()); + entity.setId(null); + entity.setIsDel(NumConstant.ZERO_STR); + return entity; + } + + @NotNull + private PatrolQueryFormDTO buildParam(UpsertPatrolRecordForm patrolRecordForm) { + PatrolQueryFormDTO midPatrolFormDTO = new PatrolQueryFormDTO(); + midPatrolFormDTO.setCustomerId(patrolRecordForm.getCustomerId()); + midPatrolFormDTO.setId(StringUtils.isBlank(patrolRecordForm.getId()) ? "" : patrolRecordForm.getId()); + midPatrolFormDTO.setPageNo(patrolRecordForm.getPageNo()); + midPatrolFormDTO.setPageSize(NumConstant.ONE_THOUSAND); + return midPatrolFormDTO; } -} \ No newline at end of file +}