Commit 676d549f authored by tianbo's avatar tianbo

filling check 同步接口提交

parent adef92c3
...@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.SystemClock; import com.baomidou.mybatisplus.core.toolkit.SystemClock;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
...@@ -17,8 +16,27 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey; ...@@ -17,8 +16,27 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto; import com.yeejoin.amos.boot.module.common.api.dto.AttachmentDto;
import com.yeejoin.amos.boot.module.common.api.service.ISourceFileService; import com.yeejoin.amos.boot.module.common.api.service.ISourceFileService;
import com.yeejoin.amos.boot.module.elevator.api.dto.*; import com.yeejoin.amos.boot.module.elevator.api.dto.AlarmStatisticsDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.*; import com.yeejoin.amos.boot.module.elevator.api.dto.AlertCalledDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertCalledFormDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertCalledObjsDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertCalledQueryDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertCalledRecordDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertHandlerDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertHandlerInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlertPaperInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.FormValue;
import com.yeejoin.amos.boot.module.elevator.api.dto.TzsCitInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.WechatMyBusinessListDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.WechatMyBussinessDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.elevator.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.elevator.api.entity.DispatchPaper;
import com.yeejoin.amos.boot.module.elevator.api.entity.DispatchTask;
import com.yeejoin.amos.boot.module.elevator.api.entity.Elevator;
import com.yeejoin.amos.boot.module.elevator.api.entity.RepairConsult;
import com.yeejoin.amos.boot.module.elevator.api.entity.TzsCitInfo;
import com.yeejoin.amos.boot.module.elevator.api.entity.VoiceRecordFile;
import com.yeejoin.amos.boot.module.elevator.api.enums.AlertStageEnums; import com.yeejoin.amos.boot.module.elevator.api.enums.AlertStageEnums;
import com.yeejoin.amos.boot.module.elevator.api.enums.DispatchPaperEnums; import com.yeejoin.amos.boot.module.elevator.api.enums.DispatchPaperEnums;
import com.yeejoin.amos.boot.module.elevator.api.enums.EquipmentClassifityEnum; import com.yeejoin.amos.boot.module.elevator.api.enums.EquipmentClassifityEnum;
...@@ -49,7 +67,14 @@ import java.text.SimpleDateFormat; ...@@ -49,7 +67,14 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -848,12 +873,12 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall ...@@ -848,12 +873,12 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
groupCode); groupCode);
// 当天接警 // 当天接警
alarmStatisticsDto.setTodayAlarmNum( // alarmStatisticsDto.setTodayAlarmNum(
map.get("calledCount") == null ? 0 : map.get("calledCount")); // map.get("calledCount") == null ? 0 : map.get("calledCount"));
// 当天提交 // // 当天提交
alarmStatisticsDto.setSubmitNum( // alarmStatisticsDto.setSubmitNum(
map.get("majorAlertCount") == null ? 0 : map.get("majorAlertCount")); // map.get("majorAlertCount") == null ? 0 : map.get("majorAlertCount"));
alarmStatisticsDto.setAllNum(this.count(allNumQueryWrapper)); // alarmStatisticsDto.setAllNum(this.count(allNumQueryWrapper));
LinkedHashMap<String, Long> recordMap = new LinkedHashMap<>(); LinkedHashMap<String, Long> recordMap = new LinkedHashMap<>();
......
package com.yeejoin.amos.boot.module.cylinder.flc.api.mapper; package com.yeejoin.amos.boot.module.cylinder.flc.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylCylinderFillingCheck; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 液化气体气瓶充装信息-充装后复查 Mapper 接口 * 液化气体气瓶充装信息-充装后复查 Mapper 接口
...@@ -15,13 +14,13 @@ import java.util.Map; ...@@ -15,13 +14,13 @@ import java.util.Map;
* @author system_generator * @author system_generator
* @date 2022-03-04 * @date 2022-03-04
*/ */
public interface CylCylinderFillingCheckMapper extends BaseMapper<CylCylinderFillingCheck> { public interface CylCylinderFillingCheckMapper extends BaseMapper<CylinderFillingCheck> {
Double queryIntegirtyByAppId(String appId); Integer getFillingCheckListTotal();
Integer getFillingCountByMonth(@Param("appId") String appId, @Param("time") Date time); List<CylinderFillingCheck> getFillingCheckList();
Integer getFillingPassedCountByMonth(@Param("appId") String appId, @Param("time") Date time); void updateFillingCheckBatch(HashSet<String> appIdList, HashSet<String> fillingCheckIdList);
Integer getCylinderInfoCount(); Integer getCylinderInfoCount();
......
...@@ -5,6 +5,7 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck ...@@ -5,6 +5,7 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 液化气体气瓶充装信息-充装后复查 Mapper 接口 * 液化气体气瓶充装信息-充装后复查 Mapper 接口
...@@ -19,4 +20,6 @@ public interface CylinderFillingCheckMapper extends BaseMapper<CylinderFillingCh ...@@ -19,4 +20,6 @@ public interface CylinderFillingCheckMapper extends BaseMapper<CylinderFillingCh
Integer getFillingCountByMonth(@Param("appId") String appId, @Param("time") Date time); Integer getFillingCountByMonth(@Param("appId") String appId, @Param("time") Date time);
Integer getFillingPassedCountByMonth(@Param("appId") String appId, @Param("time") Date time); Integer getFillingPassedCountByMonth(@Param("appId") String appId, @Param("time") Date time);
void saveOrUpdateByCondition(List<CylinderFillingCheck> fillingChecks);
} }
...@@ -35,9 +35,41 @@ ...@@ -35,9 +35,41 @@
AND app_id <![CDATA[<>]]> '' AND app_id <![CDATA[<>]]> ''
ORDER BY rec_date ORDER BY rec_date
LIMIT 1000; LIMIT 1000;
</select>
<select id="getFillingCheckListTotal" resultType="java.lang.Integer" >
SELECT
COUNT(*)
FROM
tm_cylinder_filling_check
</select>
<select id="getFillingCheckList"
resultType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck" >
SELECT
cfc.*,
'3' sync_state,
cast(( (filling_check_id IS NOT NULL ) + (within_scope IS NOT NULL ) + (sealed_state IS NOT NULL ) + (defective IS NOT NULL ) + (abnormal_temperature IS NOT NULL ) + (warning_sign IS NOT NULL ) + (compliance IS NOT NULL ) + (inspector IS NOT NULL ) + (inspection_date IS NOT NULL ) + (check_results IS NOT NULL ) + (nonconformances IS NOT NULL ))/ 11 as DECIMAL(10,2)) integrity
FROM
tm_cylinder_filling_check cfc
WHERE cfc.sync_state != 3 and filling_check_id is not null and filling_check_id != ''
limit 1000
</select> </select>
<update id="updateFillingCheckBatch">
update tm_cylinder_filling_check set sync_state = 3
<where>
app_id in
<foreach collection="appIdList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
and filling_record_id in
<foreach collection="fillingCheckIdList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
</update>
<update id="updateBatch"> <update id="updateBatch">
update tm_cylinder_info set sync_state = 3 update tm_cylinder_info set sync_state = 3
<where> <where>
......
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper"> <mapper namespace="com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper">
<insert id="saveOrUpdateByCondition">
INSERT INTO "tz_cylinder_filling_check" (
"sequence_nbr",
"filling_check_id",
"within_scope",
"sealed_state",
"defective",
"abnormal_temperature",
"warning_sign",
"compliance",
"inspector",
"inspection_date",
"rec_date",
"rec_user_id",
"sync_date",
"sync_state",
"app_id",
"integrity",
"check_results",
"nonconformances"
)
VALUES
<foreach collection ="list" item="item" index= "index" separator =",">
(
#{item.sequenceNbr},
#{item.fillingCheckId},
#{item.withinScope},
#{item.sealedState},
#{item.defective},
#{item.abnormalTemperature},
#{item.warningSign},
#{item.compliance},
#{item.inspector},
#{item.inspectionDate},
#{item.recDate},
#{item.recUserId},
#{item.syncDate},
#{item.syncState},
#{item.appId},
#{item.integrity},
#{item.checkResults},
#{item.nonconformances}
)
</foreach>
ON conflict (app_id, filling_check_id) DO
UPDATE
SET "sequence_nbr" = EXCLUDED."sequence_nbr",
"filling_check_id" = EXCLUDED."filling_check_id",
"within_scope" = EXCLUDED."within_scope",
"sealed_state" = EXCLUDED."sealed_state",
"defective" = EXCLUDED."defective",
"abnormal_temperature" = EXCLUDED."abnormal_temperature",
"warning_sign" = EXCLUDED."warning_sign",
"compliance" = EXCLUDED."compliance",
"inspector" = EXCLUDED."inspector",
"inspection_date" = EXCLUDED."inspection_date",
"rec_date" = EXCLUDED."rec_date",
"rec_user_id" = EXCLUDED."rec_user_id",
"sync_date" = EXCLUDED."sync_date",
"sync_state" = EXCLUDED."sync_state",
"app_id" = EXCLUDED."app_id",
"integrity" = EXCLUDED."integrity",
"check_results" = EXCLUDED."check_results",
"nonconformances" = EXCLUDED."nonconformances"
</insert>
<select id="queryIntegirtyByAppId" resultType="java.lang.Double"> <select id="queryIntegirtyByAppId" resultType="java.lang.Double">
SELECT AVG(integrity) AS score_avg FROM tz_cylinder_filling_check t where t.app_id = #{appId} AND SELECT AVG(integrity) AS score_avg FROM tz_cylinder_filling_check t where t.app_id = #{appId} AND
......
...@@ -28,8 +28,9 @@ public class CylSyncController { ...@@ -28,8 +28,9 @@ public class CylSyncController {
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false) @TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "test", notes = "test") @ApiOperation(value = "test", notes = "test")
@GetMapping(value = "/sync/test") @GetMapping(value = "/sync/test")
public ResponseModel<Object> testSync(){ public ResponseModel<String> testSync(){
return ResponseHelper.buildResponse(cylSyncService.testSync()); cylSyncService.syncFillingCheckInfo();
return ResponseHelper.buildResponse("ok");
} }
......
package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl; package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.yeejoin.amos.boot.module.cylinder.api.entity.ESCylinderFillingRecordDto; import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.module.cylinder.api.enums.CylDictEnum; import com.yeejoin.amos.boot.module.cylinder.api.enums.CylDictEnum;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylCylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderFillingCheckMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper;
import io.swagger.models.auth.In; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.typroject.tyboot.core.foundation.exception.BaseException;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.Date; import java.util.Comparator;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -35,24 +30,56 @@ public class CylSyncServiceImpl { ...@@ -35,24 +30,56 @@ public class CylSyncServiceImpl {
@Autowired @Autowired
private CylinderFillingCheckServiceImpl targetFillingCheckServiceImpl; private CylinderFillingCheckMapper fillingCheckMapper;
public Object testSync() { public void syncFillingCheckInfo() {
LambdaQueryWrapper<CylCylinderFillingCheck> queryWrapper = new LambdaQueryWrapper<>(); Integer totalSize = sourceFillingCheckServiceImpl.getFillCheckListTotal();
queryWrapper.last(" limit 1"); Integer times;
List<CylCylinderFillingCheck> rList = sourceFillingCheckServiceImpl.fillingCheckSync(); if (totalSize != 0) {
if (!ValidationUtil.isEmpty(rList)) { times = totalSize / 1000;
List<CylinderFillingCheck> tList = Lists.newArrayList(); int last = totalSize % 1000;
rList.stream().forEach(e -> { if (last > 0) {
CylinderFillingCheck t = new CylinderFillingCheck(); times++;
BeanUtils.copyProperties(e, t); }
t.setSyncDate(new Date()); } else {
tList.add(t); return;
}
for (int i = 0; i < times; i++) {
traverseSave();
}
}
@Transactional
void traverseSave() {
List<CylinderFillingCheck> fillingChecks = sourceFillingCheckServiceImpl.getFillingCheckList();
if (!ValidationUtil.isEmpty(fillingChecks)) {
HashSet<String> fillingCheckIdList = Sets.newHashSet();
HashSet<String> appIdList = Sets.newHashSet();
fillingChecks.forEach(e -> {
e.setAbnormalTemperature(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getAbnormalTemperature(),
CylDictEnum.abnormaLTemperature_0.getKey()))).getSeqNbr());
e.setWithinScope(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getWithinScope(),
CylDictEnum.withinScope_0.getKey()))).getSeqNbr());
e.setWarningSign(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getWarningSign(),
CylDictEnum.warningSign_0.getKey()))).getSeqNbr());
e.setSealedState(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getSealedState(),
CylDictEnum.sealedState_0.getKey()))).getSeqNbr());
e.setDefective(Objects.requireNonNull(Objects.requireNonNull(CylDictEnum.getEnum(e.getDefective(),
CylDictEnum.defective_0.getKey()))).getSeqNbr());
fillingCheckIdList.add(e.getFillingCheckId());
appIdList.add(e.getAppId());
}); });
targetFillingCheckServiceImpl.saveOrUpdateBatch(tList); List<CylinderFillingCheck> clearList = Lists.newArrayList();
return "success"; fillingChecks.stream().collect(Collectors.groupingBy(item -> item.getAppId() + "-" + item.getFillingCheckId(), Collectors.maxBy(Comparator.comparing(CylinderFillingCheck::getSyncDate)))).forEach((k,v) -> {
clearList.add(v.get());
});
//1.更新或插入业务表
fillingCheckMapper.saveOrUpdateByCondition(clearList);
//2.更新源表
sourceFillingCheckServiceImpl.updateBatch(appIdList, fillingCheckIdList);
} }
return "failed";
} }
......
package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl; package com.yeejoin.amos.boot.module.cylinder.flc.biz.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylCylinderFillingCheck; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo; import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylCylinderFillingCheckMapper; import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylCylinderFillingCheckMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 液化气体气瓶同步实现类 * 液化气体气瓶同步实现类
...@@ -22,8 +22,16 @@ public class CylinderSyncServiceImpl { ...@@ -22,8 +22,16 @@ public class CylinderSyncServiceImpl {
@Autowired @Autowired
private CylCylinderFillingCheckMapper fillingCheckMapper; private CylCylinderFillingCheckMapper fillingCheckMapper;
public List<CylCylinderFillingCheck> fillingCheckSync() { public Integer getFillCheckListTotal() {
return fillingCheckMapper.selectList(null); return fillingCheckMapper.getFillingCheckListTotal();
}
public List<CylinderFillingCheck> getFillingCheckList() {
return fillingCheckMapper.getFillingCheckList();
}
public void updateBatch(HashSet<String> appIdList, HashSet<String> fillingCheckIdList) {
fillingCheckMapper.updateFillingCheckBatch(appIdList, fillingCheckIdList);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment