提交 246e0693 作者: think

1.SampleClosingProcessMingXi表加hangxiangmh字段2.SampleClosingProcessMingXi表一次性任务

上级 7041f0b6
...@@ -672,7 +672,7 @@ public interface GPMapper { ...@@ -672,7 +672,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectSampleClosingProcessMingXi'+':'+#p0.id") @CacheEvict(key = "'selectSampleClosingProcessMingXi'+':'+#p0.id")
public void deleteSampleClosingProcessMingXi(SampleClosingProcessMingXi item); public void deleteSampleClosingProcessMingXi(SampleClosingProcessMingXi item);
public List<SampleClosingProcessMingXi> selectSampleClosingProcessMingXiCheck(SampleClosingProcessMingXi build); public List<SampleClosingProcessMingXi> selectSampleClosingProcessMingXiCheck(SampleClosingProcessMingXi build);
public Long selectSampleClosingProcessMingXiMaxRowNum();
......
...@@ -35,6 +35,7 @@ import com.huazheng.project.mssql.model.SalesContractProcessMX; ...@@ -35,6 +35,7 @@ import com.huazheng.project.mssql.model.SalesContractProcessMX;
import com.huazheng.project.mssql.model.SampleApplicationProcess; import com.huazheng.project.mssql.model.SampleApplicationProcess;
import com.huazheng.project.mssql.model.SampleApplicationProcessMingXi; import com.huazheng.project.mssql.model.SampleApplicationProcessMingXi;
import com.huazheng.project.mssql.model.SampleClosingProcess; import com.huazheng.project.mssql.model.SampleClosingProcess;
import com.huazheng.project.mssql.model.SampleClosingProcessMingXi;
import com.huazheng.project.mssql2.mapper.HzcrmMapper; import com.huazheng.project.mssql2.mapper.HzcrmMapper;
import com.huazheng.project.mssql2.model.SysSAPreturnNo; import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
...@@ -46,10 +47,10 @@ import com.huazheng.project.mssql3.model.PersonComp; ...@@ -46,10 +47,10 @@ import com.huazheng.project.mssql3.model.PersonComp;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.core.util.NumberUtil;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
@Log4j2 @Log4j2
...@@ -1511,4 +1512,60 @@ public class DeleteUpdateJobServiceImpl { ...@@ -1511,4 +1512,60 @@ public class DeleteUpdateJobServiceImpl {
} }
} }
public void selectSampleClosingProcessMingXiCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:SampleClosingProcessMingXi:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:SampleClosingProcessMingXi:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:SampleClosingProcessMingXi:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectSampleClosingProcessMingXiMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:SampleClosingProcessMingXi:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:SampleClosingProcessMingXi:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectSampleClosingProcessMingXiCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
SampleClosingProcessMingXi build = SampleClosingProcessMingXi.builder().rowNum(rowNum).build();
List<SampleClosingProcessMingXi> list = gpMapper.selectSampleClosingProcessMingXiCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectSampleClosingProcessMingXiCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
SampleClosingProcessMingXi source = crmMapper.selectSampleClosingProcessMingXiById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteSampleClosingProcessMingXi(target); // 删除数仓中的数据
operator = "delete";
} else { // 源库中有数据
String shash = SecureUtil.md5(JSONUtil.toJsonStr(source)); // 源库中数据的hash结果
String thash = target.getHashResult(); // 数仓中数据的hash结果
if (!shash.equals(thash)) { // 如果hash结果不一致
source.setHashResult(shash);
while (true) {
try {
gpMapper.updateSampleClosingProcessMingXi(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:SampleClosingProcessMingXi:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectSampleClosingProcessMingXiCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:SampleClosingProcessMingXi:rowNum", getErrorInfoFromException(e));
}
}
} }
...@@ -25,6 +25,7 @@ public class SampleClosingProcessMingXi implements Serializable { ...@@ -25,6 +25,7 @@ public class SampleClosingProcessMingXi implements Serializable {
private Integer sYS_INCIDENT; // 流程编号 private Integer sYS_INCIDENT; // 流程编号
private String shiFouTGv ; // 样品结果(数字值) private String shiFouTGv ; // 样品结果(数字值)
private String shiFouTGt ; // 样品结果(文本值) private String shiFouTGt ; // 样品结果(文本值)
private String hangxiangmh; // 行项目号
private boolean exist; // 用于标记,不是字段 private boolean exist; // 用于标记,不是字段
private String hashResult; // 数据hash标记 private String hashResult; // 数据hash标记
......
...@@ -9,3 +9,5 @@ rowNum serial, ...@@ -9,3 +9,5 @@ rowNum serial,
PRIMARY KEY (id) PRIMARY KEY (id)
) )
Distributed by (id); Distributed by (id);
alter table SampleClosingProcessMingXi add column hangxiangmh text;
\ No newline at end of file
...@@ -428,20 +428,25 @@ ...@@ -428,20 +428,25 @@
select * from SampleClosingProcessMingXi where id = #{id} select * from SampleClosingProcessMingXi where id = #{id}
</select> </select>
<insert id="insertSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi"> <insert id="insertSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi">
insert into SampleClosingProcessMingXi (id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hashResult) insert into SampleClosingProcessMingXi (id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh,hashResult)
values(#{id},#{sYS_INCIDENT},#{shiFouTGv},#{shiFouTGt},#{hashResult}) values(#{id},#{sYS_INCIDENT},#{shiFouTGv},#{shiFouTGt},#{hangxiangmh},#{hashResult})
</insert> </insert>
<delete id="deleteSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi"> <delete id="deleteSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi">
delete from SampleClosingProcessMingXi where id = #{id} delete from SampleClosingProcessMingXi where id = #{id}
</delete> </delete>
<update id="updateSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi"> <update id="updateSampleClosingProcessMingXi" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi">
update SampleClosingProcessMingXi set update SampleClosingProcessMingXi set
sYS_INCIDENT=#{sYS_INCIDENT},shiFouTGv=#{shiFouTGv},shiFouTGt=#{shiFouTGt},hashResult=#{hashResult} sYS_INCIDENT=#{sYS_INCIDENT},shiFouTGv=#{shiFouTGv},shiFouTGt=#{shiFouTGt},hangxiangmh=#{hangxiangmh},hashResult=#{hashResult}
where id = #{id} where id = #{id}
</update> </update>
<select id="selectSampleClosingProcessMingXiCheck" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi" resultType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi"> <select id="selectSampleClosingProcessMingXiCheck" parameterType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi" resultType="com.huazheng.project.mssql.model.SampleClosingProcessMingXi">
select * from SampleClosingProcessMingXi where rownum &gt; #{rowNum} order by rownum limit 20 select * from SampleClosingProcessMingXi where rownum &gt; #{rowNum} order by rownum limit 20
</select> </select>
<select id="selectSampleClosingProcessMingXiMaxRowNum" resultType="long">
select max(rowNum) from SampleClosingProcessMingXi
</select>
<select id="selectTKeHu" parameterType="com.huazheng.project.mssql2.model.TKeHu" resultType="com.huazheng.project.mssql2.model.TKeHu"> <select id="selectTKeHu" parameterType="com.huazheng.project.mssql2.model.TKeHu" resultType="com.huazheng.project.mssql2.model.TKeHu">
select * from TKeHu where keHuID = #{keHuID} select * from TKeHu where keHuID = #{keHuID}
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
</select> </select>
<select id="selectSampleClosingProcessMingXiNew" parameterType="SampleClosingProcessMingXi" resultType="SampleClosingProcessMingXi"> <select id="selectSampleClosingProcessMingXiNew" parameterType="SampleClosingProcessMingXi" resultType="SampleClosingProcessMingXi">
select top 20 select top 20
id,sYS_INCIDENT,shiFouTGv,shiFouTGt id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh
from "Biz_样品结案流程_MingXi" from "Biz_样品结案流程_MingXi"
where id &gt; #{id} where id &gt; #{id}
</select> </select>
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
</select> </select>
<select id="cascadeSampleClosingProcessMingXiBySampleClosingProcess" parameterType="SampleClosingProcess" resultType="SampleClosingProcessMingXi"> <select id="cascadeSampleClosingProcessMingXiBySampleClosingProcess" parameterType="SampleClosingProcess" resultType="SampleClosingProcessMingXi">
select top 20 select top 20
id,sYS_INCIDENT,shiFouTGv,shiFouTGt id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh
from "Biz_样品结案流程_MingXi" from "Biz_样品结案流程_MingXi"
where SYS_INCIDENT = #{sYS_INCIDENT} where SYS_INCIDENT = #{sYS_INCIDENT}
</select> </select>
...@@ -214,7 +214,7 @@ ...@@ -214,7 +214,7 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="selectSampleClosingProcessMingXiById" parameterType="SampleClosingProcessMingXi" resultType="SampleClosingProcessMingXi"> <select id="selectSampleClosingProcessMingXiById" parameterType="SampleClosingProcessMingXi" resultType="SampleClosingProcessMingXi">
select id,sYS_INCIDENT,shiFouTGv,shiFouTGt select id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh
from "Biz_样品结案流程_MingXi" from "Biz_样品结案流程_MingXi"
where id = #{id} where id = #{id}
</select> </select>
......
...@@ -1546,6 +1546,16 @@ ...@@ -1546,6 +1546,16 @@
</property> </property>
<property name="cronExpression" value="* * * * * ?" /> <property name="cronExpression" value="* * * * * ?" />
</bean> </bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="name" value="selectSampleClosingProcessMingXiCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectSampleClosingProcessMingXiCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
</list> </list>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论