提交 a9321654 作者: think

1.SalesContractProcessMX加wuliaoh字段2.SalesContractProcessMX一次性任务

上级 c375e0af
...@@ -590,6 +590,7 @@ public interface GPMapper { ...@@ -590,6 +590,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectSalesContractProcessMX'+':'+#p0.id") @CacheEvict(key = "'selectSalesContractProcessMX'+':'+#p0.id")
public void updateSalesContractProcessMX(SalesContractProcessMX scpmx); public void updateSalesContractProcessMX(SalesContractProcessMX scpmx);
public List<SalesContractProcessMX> selectSalesContractProcessMXCheck(SalesContractProcessMX build); public List<SalesContractProcessMX> selectSalesContractProcessMXCheck(SalesContractProcessMX build);
public Long selectSalesContractProcessMXMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.id", unless="#result == null") @Cacheable(key = "#root.method.name+':'+#p0.id", unless="#result == null")
public SalesForecastProcess selectSalesForecastProcess(SalesForecastProcess sfp); // 查询替代删除 public SalesForecastProcess selectSalesForecastProcess(SalesForecastProcess sfp); // 查询替代删除
......
...@@ -31,6 +31,7 @@ import com.huazheng.project.hana.model.Tvkbt; ...@@ -31,6 +31,7 @@ import com.huazheng.project.hana.model.Tvkbt;
import com.huazheng.project.hana.model.Vbak; import com.huazheng.project.hana.model.Vbak;
import com.huazheng.project.hana.model.Vbap; import com.huazheng.project.hana.model.Vbap;
import com.huazheng.project.mssql.mapper.CrmMapper; import com.huazheng.project.mssql.mapper.CrmMapper;
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.mssql2.mapper.HzcrmMapper; import com.huazheng.project.mssql2.mapper.HzcrmMapper;
...@@ -1333,4 +1334,60 @@ public class DeleteUpdateJobServiceImpl { ...@@ -1333,4 +1334,60 @@ public class DeleteUpdateJobServiceImpl {
} }
} }
public void selectSalesContractProcessMXCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:SalesContractProcessMX:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:SalesContractProcessMX:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:SalesContractProcessMX:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectSalesContractProcessMXMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:SalesContractProcessMX:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:SalesContractProcessMX:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectSalesContractProcessMXCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
SalesContractProcessMX build = SalesContractProcessMX.builder().rowNum(rowNum).build();
List<SalesContractProcessMX> list = gpMapper.selectSalesContractProcessMXCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectSalesContractProcessMXCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
SalesContractProcessMX source = crmMapper.selectSalesContractProcessMXById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteSalesContractProcessMX(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.updateSalesContractProcessMX(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:SalesContractProcessMX:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectSalesContractProcessMXCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:SalesContractProcessMX:rowNum", getErrorInfoFromException(e));
}
}
} }
...@@ -28,6 +28,8 @@ public class SalesContractProcessMX implements Serializable { ...@@ -28,6 +28,8 @@ public class SalesContractProcessMX implements Serializable {
private String zongjia; // 销售值 private String zongjia; // 销售值
private String maolibz; // 预测毛利 private String maolibz; // 预测毛利
private String wuliaoh; // 物料号
private Vbap vbap; private Vbap vbap;
private boolean exist; // 用于标记,不是字段 private boolean exist; // 用于标记,不是字段
......
...@@ -12,3 +12,4 @@ alter table SalesContractProcessMX add column rowNum serial; ...@@ -12,3 +12,4 @@ alter table SalesContractProcessMX add column rowNum serial;
alter table SalesContractProcessMX add column zongjia text; alter table SalesContractProcessMX add column zongjia text;
alter table SalesContractProcessMX add column maolibz text; alter table SalesContractProcessMX add column maolibz text;
alter table SalesContractProcessMX add column wuliaoh text;
...@@ -229,19 +229,24 @@ ...@@ -229,19 +229,24 @@
select * from SalesContractProcessMX where id = #{id} select * from SalesContractProcessMX where id = #{id}
</select> </select>
<insert id="insertSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX"> <insert id="insertSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX">
insert into SalesContractProcessMX (id, chengben, sysIncident, zongjia, maolibz, hashResult) values(#{id}, #{chengben}, #{sysIncident}, #{zongjia}, #{maolibz}, #{hashResult}) insert into SalesContractProcessMX (id, chengben, sysIncident, zongjia, maolibz, wuliaoh, hashResult) values(#{id}, #{chengben}, #{sysIncident}, #{zongjia}, #{maolibz}, #{wuliaoh}, #{hashResult})
</insert> </insert>
<delete id="deleteSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX"> <delete id="deleteSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX">
delete from SalesContractProcessMX where id = #{id} delete from SalesContractProcessMX where id = #{id}
</delete> </delete>
<update id="updateSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX"> <update id="updateSalesContractProcessMX" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX">
update SalesContractProcessMX set update SalesContractProcessMX set
id = #{id}, chengben = #{chengben}, sysIncident = #{sysIncident}, zongjia = #{zongjia}, maolibz = #{maolibz}, hashResult = #{hashResult} id = #{id}, chengben = #{chengben}, sysIncident = #{sysIncident}, zongjia = #{zongjia}, maolibz = #{maolibz}, wuliaoh = #{wuliaoh}, hashResult = #{hashResult}
where id = #{id} where id = #{id}
</update> </update>
<select id="selectSalesContractProcessMXCheck" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX" resultType="com.huazheng.project.mssql.model.SalesContractProcessMX"> <select id="selectSalesContractProcessMXCheck" parameterType="com.huazheng.project.mssql.model.SalesContractProcessMX" resultType="com.huazheng.project.mssql.model.SalesContractProcessMX">
select * from SalesContractProcessMX where rownum &gt; #{rowNum} order by rownum limit 20 select * from SalesContractProcessMX where rownum &gt; #{rowNum} order by rownum limit 20
</select> </select>
<select id="selectSalesContractProcessMXMaxRowNum" resultType="long">
select max(rowNum) from SalesContractProcessMX
</select>
<select id="selectSalesForecastProcess" parameterType="com.huazheng.project.mssql.model.SalesForecastProcess" resultType="com.huazheng.project.mssql.model.SalesForecastProcess"> <select id="selectSalesForecastProcess" parameterType="com.huazheng.project.mssql.model.SalesForecastProcess" resultType="com.huazheng.project.mssql.model.SalesForecastProcess">
select * from SalesForecastProcess where id = #{id} select * from SalesForecastProcess where id = #{id}
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
</select> </select>
<!-- process中的关联查询 --> <!-- process中的关联查询 -->
<select id="selectSalesContractProcessMX" parameterType="SalesContractProcess" resultType="SalesContractProcessMX"> <select id="selectSalesContractProcessMX" parameterType="SalesContractProcess" resultType="SalesContractProcessMX">
select id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz select id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz, wuliaoh
from "Biz_销售合同流程_MX" from "Biz_销售合同流程_MX"
where SYS_INCIDENT = #{sysIncident} where SYS_INCIDENT = #{sysIncident}
</select> </select>
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
<select id="cascadeSalesContractProcessMXBySalesContractProcess" parameterType="SalesContractProcess" resultType="SalesContractProcessMX"> <select id="cascadeSalesContractProcessMXBySalesContractProcess" parameterType="SalesContractProcess" resultType="SalesContractProcessMX">
select top 20 select top 20
id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz, wuliaoh
from "Biz_销售合同流程_MX" from "Biz_销售合同流程_MX"
where SYS_INCIDENT = #{sysIncident} where SYS_INCIDENT = #{sysIncident}
</select> </select>
...@@ -176,7 +176,7 @@ ...@@ -176,7 +176,7 @@
</select> </select>
<select id="selectSalesContractProcessMXById" parameterType="SalesContractProcessMX" resultType="SalesContractProcessMX"> <select id="selectSalesContractProcessMXById" parameterType="SalesContractProcessMX" resultType="SalesContractProcessMX">
select id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz select id, chengben, SYS_INCIDENT as sysIncident, zongjia, maolibz, wuliaoh
from "Biz_销售合同流程_MX" from "Biz_销售合同流程_MX"
where id = #{id} where id = #{id}
</select> </select>
......
...@@ -1323,6 +1323,16 @@ ...@@ -1323,6 +1323,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="selectSalesContractProcessMXCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectSalesContractProcessMXCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
</list> </list>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论