Commit 676d549f authored by tianbo's avatar tianbo

filling check 同步接口提交

parent adef92c3
......@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.SystemClock;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
......@@ -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.module.common.api.dto.AttachmentDto;
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.entity.*;
import com.yeejoin.amos.boot.module.elevator.api.dto.AlarmStatisticsDto;
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.DispatchPaperEnums;
import com.yeejoin.amos.boot.module.elevator.api.enums.EquipmentClassifityEnum;
......@@ -49,7 +67,14 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
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;
/**
......@@ -848,12 +873,12 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
groupCode);
// 当天接警
alarmStatisticsDto.setTodayAlarmNum(
map.get("calledCount") == null ? 0 : map.get("calledCount"));
// 当天提交
alarmStatisticsDto.setSubmitNum(
map.get("majorAlertCount") == null ? 0 : map.get("majorAlertCount"));
alarmStatisticsDto.setAllNum(this.count(allNumQueryWrapper));
// alarmStatisticsDto.setTodayAlarmNum(
// map.get("calledCount") == null ? 0 : map.get("calledCount"));
// // 当天提交
// alarmStatisticsDto.setSubmitNum(
// map.get("majorAlertCount") == null ? 0 : map.get("majorAlertCount"));
// alarmStatisticsDto.setAllNum(this.count(allNumQueryWrapper));
LinkedHashMap<String, Long> recordMap = new LinkedHashMap<>();
......
package com.yeejoin.amos.boot.module.cylinder.flc.api.mapper;
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 org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/**
* 液化气体气瓶充装信息-充装后复查 Mapper 接口
......@@ -15,13 +14,13 @@ import java.util.Map;
* @author system_generator
* @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();
......
......@@ -5,6 +5,7 @@ import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 液化气体气瓶充装信息-充装后复查 Mapper 接口
......@@ -19,4 +20,6 @@ public interface CylinderFillingCheckMapper extends BaseMapper<CylinderFillingCh
Integer getFillingCountByMonth(@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 @@
AND app_id <![CDATA[<>]]> ''
ORDER BY rec_date
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>
<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 tm_cylinder_info set sync_state = 3
<where>
......
<?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">
<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 AVG(integrity) AS score_avg FROM tz_cylinder_filling_check t where t.app_id = #{appId} AND
......
......@@ -28,8 +28,9 @@ public class CylSyncController {
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "test", notes = "test")
@GetMapping(value = "/sync/test")
public ResponseModel<Object> testSync(){
return ResponseHelper.buildResponse(cylSyncService.testSync());
public ResponseModel<String> testSync(){
cylSyncService.syncFillingCheckInfo();
return ResponseHelper.buildResponse("ok");
}
......
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.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.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.mapper.CylinderFillingCheckMapper;
import com.yeejoin.amos.boot.module.cylinder.flc.api.mapper.CylinderInfoMapper;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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 java.util.Date;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
......@@ -35,24 +30,56 @@ public class CylSyncServiceImpl {
@Autowired
private CylinderFillingCheckServiceImpl targetFillingCheckServiceImpl;
private CylinderFillingCheckMapper fillingCheckMapper;
public Object testSync() {
LambdaQueryWrapper<CylCylinderFillingCheck> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.last(" limit 1");
List<CylCylinderFillingCheck> rList = sourceFillingCheckServiceImpl.fillingCheckSync();
if (!ValidationUtil.isEmpty(rList)) {
List<CylinderFillingCheck> tList = Lists.newArrayList();
rList.stream().forEach(e -> {
CylinderFillingCheck t = new CylinderFillingCheck();
BeanUtils.copyProperties(e, t);
t.setSyncDate(new Date());
tList.add(t);
public void syncFillingCheckInfo() {
Integer totalSize = sourceFillingCheckServiceImpl.getFillCheckListTotal();
Integer times;
if (totalSize != 0) {
times = totalSize / 1000;
int last = totalSize % 1000;
if (last > 0) {
times++;
}
} else {
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);
return "success";
List<CylinderFillingCheck> clearList = Lists.newArrayList();
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;
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.mapper.CylCylinderFillingCheckMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/**
* 液化气体气瓶同步实现类
......@@ -22,8 +22,16 @@ public class CylinderSyncServiceImpl {
@Autowired
private CylCylinderFillingCheckMapper fillingCheckMapper;
public List<CylCylinderFillingCheck> fillingCheckSync() {
return fillingCheckMapper.selectList(null);
public Integer getFillCheckListTotal() {
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