提交 915a2df0 作者: think

1.表SampleClosingProcess加sys_starttime字段2.表SampleClosingProcess一次性任务

上级 3350aa6f
...@@ -641,6 +641,7 @@ public interface GPMapper { ...@@ -641,6 +641,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectSampleClosingProcess'+':'+#p0.id") @CacheEvict(key = "'selectSampleClosingProcess'+':'+#p0.id")
public void deleteSampleClosingProcess(SampleClosingProcess item); public void deleteSampleClosingProcess(SampleClosingProcess item);
public List<SampleClosingProcess> selectSampleClosingProcessCheck(SampleClosingProcess build); public List<SampleClosingProcess> selectSampleClosingProcessCheck(SampleClosingProcess build);
public Long selectSampleClosingProcessMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.id", unless="#result == null") @Cacheable(key = "#root.method.name+':'+#p0.id", unless="#result == null")
public SampleClosingProcessMingXi selectSampleClosingProcessMingXi(SampleClosingProcessMingXi sfp); // 查询替代删除 public SampleClosingProcessMingXi selectSampleClosingProcessMingXi(SampleClosingProcessMingXi sfp); // 查询替代删除
......
...@@ -34,6 +34,7 @@ import com.huazheng.project.mssql.mapper.CrmMapper; ...@@ -34,6 +34,7 @@ import com.huazheng.project.mssql.mapper.CrmMapper;
import com.huazheng.project.mssql.model.SalesContractProcessMX; 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.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;
...@@ -1451,4 +1452,60 @@ public class DeleteUpdateJobServiceImpl { ...@@ -1451,4 +1452,60 @@ public class DeleteUpdateJobServiceImpl {
} }
} }
public void selectSampleClosingProcessCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:SampleClosingProcess:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:SampleClosingProcess:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:SampleClosingProcess:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectSampleClosingProcessMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:SampleClosingProcess:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:SampleClosingProcess:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectSampleClosingProcessCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
SampleClosingProcess build = SampleClosingProcess.builder().rowNum(rowNum).build();
List<SampleClosingProcess> list = gpMapper.selectSampleClosingProcessCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectSampleClosingProcessCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
SampleClosingProcess source = crmMapper.selectSampleClosingProcessById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteSampleClosingProcess(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.updateSampleClosingProcess(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:SampleClosingProcess:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectSampleClosingProcessCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:SampleClosingProcess:rowNum", getErrorInfoFromException(e));
}
}
} }
...@@ -36,6 +36,10 @@ public class SampleClosingProcess implements Serializable { ...@@ -36,6 +36,10 @@ public class SampleClosingProcess implements Serializable {
@JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化 @JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化
private String sys_updatetime; private String sys_updatetime;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") // 页面写入数据库时格式化
@JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化
private String sys_starttime; // 发起时间
private boolean exist; // 用于标记,不是字段 private boolean exist; // 用于标记,不是字段
private String hashResult; // 数据hash标记 private String hashResult; // 数据hash标记
private String rowNum; // 用于标记,不是字段 private String rowNum; // 用于标记,不是字段
......
...@@ -13,3 +13,4 @@ alter table SampleClosingProcess add column yangPinSQSLHi integer; ...@@ -13,3 +13,4 @@ alter table SampleClosingProcess add column yangPinSQSLHi integer;
alter table SampleClosingProcess add column sYS_INCSTATUS integer; alter table SampleClosingProcess add column sYS_INCSTATUS integer;
alter table SampleClosingProcess add column sys_updatetime timestamp; alter table SampleClosingProcess add column sys_updatetime timestamp;
alter table SampleClosingProcess add column sys_starttime timestamp;
...@@ -357,8 +357,8 @@ ...@@ -357,8 +357,8 @@
select * from SampleClosingProcess where id = #{id} select * from SampleClosingProcess where id = #{id}
</select> </select>
<insert id="insertSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess"> <insert id="insertSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess">
insert into SampleClosingProcess (id,sYS_INCIDENT,yangPinSQSLH,yangPinSQSLHi,sYS_INCSTATUS,sys_updatetime,hashResult) insert into SampleClosingProcess (id,sYS_INCIDENT,yangPinSQSLH,yangPinSQSLHi,sYS_INCSTATUS,sys_updatetime,sys_starttime,hashResult)
values(#{id},#{sYS_INCIDENT},#{yangPinSQSLH},#{yangPinSQSLHi},#{sYS_INCSTATUS},#{sys_updatetime},#{hashResult}) values(#{id},#{sYS_INCIDENT},#{yangPinSQSLH},#{yangPinSQSLHi},#{sYS_INCSTATUS},#{sys_updatetime},#{sys_starttime},#{hashResult})
</insert> </insert>
<delete id="deleteSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess"> <delete id="deleteSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess">
delete from SampleClosingProcess where id = #{id} delete from SampleClosingProcess where id = #{id}
...@@ -366,12 +366,16 @@ ...@@ -366,12 +366,16 @@
<update id="updateSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess"> <update id="updateSampleClosingProcess" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess">
update SampleClosingProcess set update SampleClosingProcess set
sYS_INCIDENT=#{sYS_INCIDENT},yangPinSQSLH=#{yangPinSQSLH},yangPinSQSLHi=#{yangPinSQSLHi}, sYS_INCIDENT=#{sYS_INCIDENT},yangPinSQSLH=#{yangPinSQSLH},yangPinSQSLHi=#{yangPinSQSLHi},
sYS_INCSTATUS=#{sYS_INCSTATUS},sys_updatetime=#{sys_updatetime},hashResult=#{hashResult} sYS_INCSTATUS=#{sYS_INCSTATUS},sys_updatetime=#{sys_updatetime},sys_starttime=#{sys_starttime},hashResult=#{hashResult}
where id = #{id} where id = #{id}
</update> </update>
<select id="selectSampleClosingProcessCheck" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess" resultType="com.huazheng.project.mssql.model.SampleClosingProcess"> <select id="selectSampleClosingProcessCheck" parameterType="com.huazheng.project.mssql.model.SampleClosingProcess" resultType="com.huazheng.project.mssql.model.SampleClosingProcess">
select * from SampleClosingProcess where rownum &gt; #{rowNum} order by rownum limit 20 select * from SampleClosingProcess where rownum &gt; #{rowNum} order by rownum limit 20
</select> </select>
<select id="selectSampleClosingProcessMaxRowNum" resultType="long">
select max(rowNum) from SampleClosingProcess
</select>
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</select> </select>
<select id="selectSampleClosingProcessNew" parameterType="SampleClosingProcess" resultType="SampleClosingProcess"> <select id="selectSampleClosingProcessNew" parameterType="SampleClosingProcess" resultType="SampleClosingProcess">
select top 20 select top 20
id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime,sys_starttime
from "Biz_样品结案流程" from "Biz_样品结案流程"
where id &gt; #{id} where id &gt; #{id}
</select> </select>
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
</select> </select>
<select id="selectSampleClosingProcessCheckByUpdate" parameterType="SampleClosingProcess" resultType="SampleClosingProcess"> <select id="selectSampleClosingProcessCheckByUpdate" parameterType="SampleClosingProcess" resultType="SampleClosingProcess">
select top 20 select top 20
id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime,sys_starttime
from "Biz_样品结案流程" from "Biz_样品结案流程"
where id &gt; #{id} where id &gt; #{id}
and sys_updatetime is not null and CONVERT(varchar(10),sys_updatetime,120) = CONVERT(varchar(10),GETDATE(),120) and sys_updatetime is not null and CONVERT(varchar(10),sys_updatetime,120) = CONVERT(varchar(10),GETDATE(),120)
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="selectSampleClosingProcessById" parameterType="SampleClosingProcess" resultType="SampleClosingProcess"> <select id="selectSampleClosingProcessById" parameterType="SampleClosingProcess" resultType="SampleClosingProcess">
select id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime select id,sYS_INCIDENT,yangPinSQSLH,sYS_INCSTATUS,sys_updatetime,sys_starttime
from "Biz_样品结案流程" from "Biz_样品结案流程"
where id = #{id} where id = #{id}
</select> </select>
......
...@@ -1472,6 +1472,16 @@ ...@@ -1472,6 +1472,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="selectSampleClosingProcessCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectSampleClosingProcessCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
</list> </list>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论