Commit c2efdfe3 authored by lisong's avatar lisong

气瓶充装记录同步接口添加

parent 173a4ada
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.CylinderFilling;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylCylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFilling;
import org.apache.ibatis.annotations.Param;
import java.util.HashSet;
import java.util.List;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 液化气体气瓶充装信息-充装后复查 Mapper 接口
......@@ -36,4 +33,12 @@ public interface CylCylinderFillingCheckMapper extends BaseMapper<CylinderFillin
void updataSyncFilling(List<String> appIds,List<String> fillingBeforeIds,List<String> sequenceCodes);
void batchInsert(@Param("list") List<CylinderFilling> list);
Long selectCountTotal();
List<CylinderFillingRecord> fillingRecordSyncRecords();
void batchInsertOrUpdate(@Param("list") List<CylinderFillingRecord> list);
void updateSyncState(@Param("appIds") List<String> appids, @Param("records")List<String> records);
}
......@@ -205,4 +205,116 @@
check_results = EXCLUDED.check_results,
nonconformances = EXCLUDED.nonconformances
</insert>
<select id="selectCountTotal" resultType="java.lang.Long">
SELECT COUNT
( 1 )
FROM
(
SELECT
sequence_nbr
FROM
tm_cylinder_filling_record cfr
WHERE
sync_state != 3
AND filling_record_id is not null
GROUP BY
cfr.app_id,
cfr.filling_record_id
)
</select>
<select id="fillingRecordSyncRecords"
resultType="com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord">
SELECT
cfr.*,
'3' sync_state_str,
CAST ((
( filling_record_id IS NOT NULL ) + ( filling_before_id IS NOT NULL ) + ( filling_check_id IS NOT NULL ) + ( filling_examine_id IS NOT NULL ) + ( filling_startTime IS NOT NULL ) + ( filling_endTime IS NOT NULL ) + ( filling_user IS NOT NULL ) + ( inspector_name IS NOT NULL ) + ( filling_quantity IS NOT NULL ) + ( temperature IS NOT NULL ) + ( abnormal IS NOT NULL )
) / 11 AS DECIMAL ( 10, 2 )) integrity
FROM tm_cylinder_filling_record cfr where sync_state !=3 and filling_record_id is not null
ORDER BY cfr.sync_date
LIMIT 5000
</select>
<insert id="batchInsertOrUpdate" >
INSERT INTO tz_cylinder_filling_record_2210 (sequence_nbr,
filling_record_id,
filling_starttime,
filling_endtime,
filling_user,
filling_quantity,
temperature,
abnormal,
rec_date,
rec_user_id,
sync_date,
sync_state,
app_id,
integrity,
inspector_name,
filling_before_id,
filling_check_id,
filling_examine_id,
is_not_es)
VALUES
<foreach collection ="list" item="item" index= "index" separator =",">
(#{item.sequenceNbr},
#{item.fillingRecordId},
#{item.fillingStarttime},
#{item.fillingEndtime},
#{item.fillingUser},
#{item.fillingQuantity},
#{item.temperature},
#{item.abnormal},
#{item.recDate},
#{item.recUserId},
#{item.syncDate},
#{item.syncState},
#{item.appId},
#{item.integrity},
#{item.inspectorName},
#{item.fillingBeforeId},
#{item.fillingCheckId},
#{item.fillingExamineId},
null)
</foreach>
on conflict (app_id, filling_record_id) do update set
sequence_nbr = EXCLUDED.sequence_nbr,
filling_record_id = EXCLUDED.filling_record_id,
filling_starttime = EXCLUDED.filling_starttime,
filling_endtime = EXCLUDED.filling_endtime,
filling_user = EXCLUDED.filling_user,
filling_quantity = EXCLUDED.filling_quantity,
temperature = EXCLUDED.temperature,
abnormal = EXCLUDED.abnormal,
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,
inspector_name = EXCLUDED.inspector_name,
filling_before_id = EXCLUDED.filling_before_id,
filling_check_id = EXCLUDED.filling_check_id,
filling_examine_id = EXCLUDED.filling_examine_id,
is_not_es = null
</insert>
<update id="updateSyncState">
update tm_cylinder_filling_record set sync_state = 3
<where>
app_id in
<foreach collection="appIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
and filling_record_id in
<foreach collection="records" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
</update>
</mapper>
......@@ -59,4 +59,10 @@ public class CylSyncController {
return ResponseHelper.buildResponse(cylSyncService.fillingSync());
}
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@ApiOperation(value = "充装记录同步", notes = "充装记录同步")
@GetMapping(value = "/sync/fillingRecordSync")
public ResponseModel<Object> fillingRecordSync(){
return ResponseHelper.buildResponse(cylSyncService.fillingRecordSync());
}
}
......@@ -6,6 +6,7 @@ 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.CylinderFilling;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord;
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.CylinderFillingCheckMapper;
......@@ -172,4 +173,31 @@ public class CylSyncServiceImpl {
cylCylinderFillingCheckMapper.batchInsert(data);
}
@Transactional
public String fillingRecordSync() {
Long count = sourceFillingCheckServiceImpl.fillingRecordSync();
Long times = 0L;
if (count != 0) {
times = count / 5000;
Long last = count % 5000;
if (last > 0) {
times++;
}
} else {
return "no data sync";
}
for (int i = 0; i < times; i++) {
List<CylinderFillingRecord> cylinderFillingRecords = sourceFillingCheckServiceImpl.fillingRecordSyncRecords();
cylinderFillingRecords.forEach(item -> {
item.setAbnormal(item.getAbnormal() == 1 ? 3140 : 3139);
item.setSyncState(3);
});
List<String> appIds = cylinderFillingRecords.stream().map(CylinderFillingRecord::getAppId).collect(Collectors.toList());
List<String> records = cylinderFillingRecords.stream().map(CylinderFillingRecord::getFillingRecordId).collect(Collectors.toList());
cylCylinderFillingCheckMapper.batchInsertOrUpdate(cylinderFillingRecords);
sourceFillingCheckServiceImpl.updateSyncState(appIds, records);
}
return "ok";
}
}
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.CylinderFilling;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFillingRecord;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderInfo;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylCylinderFillingCheck;
import com.yeejoin.amos.boot.module.cylinder.flc.api.entity.CylinderFilling;
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;
/**
* 液化气体气瓶同步实现类
......@@ -58,4 +57,16 @@ public class CylinderSyncServiceImpl {
public void updataSyncFilling(List<String> appIds,List<String> fillingBeforeIds,List<String> sequenceCodes){
fillingCheckMapper.updataSyncFilling(appIds,fillingBeforeIds,sequenceCodes);
}
public Long fillingRecordSync(){
return fillingCheckMapper.selectCountTotal();
}
public List<CylinderFillingRecord> fillingRecordSyncRecords(){
return fillingCheckMapper.fillingRecordSyncRecords();
}
public void updateSyncState(List<String> appIds, List<String> records){
fillingCheckMapper.updateSyncState(appIds, records);
}
}
\ No newline at end of file
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