提交 06eb7d47 作者: think

1.表SysSAPreturnNo加faHuoHXMH字段2.表SysSAPreturnNo一次性任务

上级 8beadbc3
......@@ -532,6 +532,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectSysSAPreturnNo'+':'+#p0.id")
public void updateSysSAPreturnNo(SysSAPreturnNo item);
public List<SysSAPreturnNo> selectSysSAPreturnNoCheck(SysSAPreturnNo build);
public Long selectSysSAPreturnNoMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.keHuID", unless="#result == null")
public TKeHu selectTKeHu(TKeHu tkeHu);
......
......@@ -35,6 +35,7 @@ import com.huazheng.project.mssql.model.SalesContractProcessMX;
import com.huazheng.project.mssql.model.SampleApplicationProcess;
import com.huazheng.project.mssql.model.SampleApplicationProcessMingXi;
import com.huazheng.project.mssql2.mapper.HzcrmMapper;
import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
......@@ -1394,4 +1395,60 @@ public class DeleteUpdateJobServiceImpl {
}
}
public void selectSysSAPreturnNoCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:SysSAPreturnNo:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:SysSAPreturnNo:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:SysSAPreturnNo:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectSysSAPreturnNoMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:SysSAPreturnNo:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:SysSAPreturnNo:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectSysSAPreturnNoCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
SysSAPreturnNo build = SysSAPreturnNo.builder().rowNum(rowNum).build();
List<SysSAPreturnNo> list = gpMapper.selectSysSAPreturnNoCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectSysSAPreturnNoCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
SysSAPreturnNo source = hzcrmMapper.selectSysSAPreturnNoById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteSysSAPreturnNo(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.updateSysSAPreturnNo(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:SysSAPreturnNo:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectSysSAPreturnNoCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:SysSAPreturnNo:rowNum", getErrorInfoFromException(e));
}
}
}
......@@ -25,6 +25,7 @@ public class SysSAPreturnNo implements Serializable {
private Integer shiLiH; // 流程编号
private String sapNo; // 销售订单号
private Date chuangJianSJ; // 创建时间
private Integer faHuoHXMH; // 行项目号
private Vbap vbap;
......
......@@ -11,3 +11,4 @@ Distributed by (id);
alter table SysSAPreturnNo add column hashResult text;
alter table SysSAPreturnNo add column rowNum serial;
alter table SysSAPreturnNo add column faHuoHXMH integer;
......@@ -185,8 +185,8 @@
where id = #{id}
</select>
<insert id="insertSysSAPreturnNo" parameterType="com.huazheng.project.mssql2.model.SysSAPreturnNo">
insert into SysSAPreturnNo (id, processName, shiLiH, sapNo, chuangJianSJ, hashResult)
values(#{id}, #{processName}, #{shiLiH}, #{sapNo}, #{chuangJianSJ}, #{hashResult})
insert into SysSAPreturnNo (id, processName, shiLiH, sapNo, chuangJianSJ, faHuoHXMH, hashResult)
values(#{id}, #{processName}, #{shiLiH}, #{sapNo}, #{chuangJianSJ}, #{faHuoHXMH}, #{hashResult})
</insert>
<delete id="deleteSysSAPreturnNo" parameterType="com.huazheng.project.mssql2.model.SysSAPreturnNo">
delete from SysSAPreturnNo
......@@ -194,12 +194,16 @@
</delete>
<update id="updateSysSAPreturnNo" parameterType="com.huazheng.project.mssql2.model.SysSAPreturnNo">
update SysSAPreturnNo set
id = #{id}, processName = #{processName}, shiLiH = #{shiLiH}, sapNo = #{sapNo}, chuangJianSJ = #{chuangJianSJ}, hashResult = #{hashResult}
id = #{id}, processName = #{processName}, shiLiH = #{shiLiH}, sapNo = #{sapNo}, chuangJianSJ = #{chuangJianSJ}, faHuoHXMH = #{faHuoHXMH}, hashResult = #{hashResult}
where id = #{id}
</update>
<select id="selectSysSAPreturnNoCheck" parameterType="com.huazheng.project.mssql2.model.SysSAPreturnNo" resultType="com.huazheng.project.mssql2.model.SysSAPreturnNo">
select * from SysSAPreturnNo where rownum &gt; #{rowNum} order by rownum limit 20
</select>
<select id="selectSysSAPreturnNoMaxRowNum" resultType="long">
select max(rowNum) from SysSAPreturnNo
</select>
<select id="selectSalesContractProcess" parameterType="com.huazheng.project.mssql.model.SalesContractProcess" resultType="com.huazheng.project.mssql.model.SalesContractProcess">
select * from SalesContractProcess where id = #{id}
......
......@@ -19,7 +19,7 @@
<select id="selectSysSAPreturnNoNew" parameterType="SysSAPreturnNo" resultType="SysSAPreturnNo">
select top 20 a.* from (
select id as rowids,
id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ
id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ,faHuoHXMH
from Sys_SAPreturnNo
) a where a.rowids &gt; #{rowids}
</select>
......@@ -46,7 +46,7 @@
<select id="selectSysSAPreturnNoById" parameterType="SysSAPreturnNo" resultType="SysSAPreturnNo">
select id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ from Sys_SAPreturnNo where id = #{id}
select id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ,faHuoHXMH from Sys_SAPreturnNo where id = #{id}
</select>
<select id="selectTKeHuById" parameterType="TKeHu" resultType="TKeHu">
SELECT keHuID,keHuCode,keHuMC,xinBaoED,diQu from T_KeHu where keHuID = #{keHuID}
......@@ -69,7 +69,7 @@
<select id="cascadeSysSAPreturnNoByVbap" parameterType="com.huazheng.project.hana.model.Vbap" resultType="SysSAPreturnNo">
select top 20 a.* from (
select id as rowids,
id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ
id,processName,shiLiH,('00'+sapNo) as sapNo,chuangJianSJ,faHuoHXMH
from Sys_SAPreturnNo
) a where sapNo = #{vbeln}
</select>
......
......@@ -1333,6 +1333,16 @@
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="name" value="selectSysSAPreturnNoCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectSysSAPreturnNoCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
</list>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论