提交 f965dd4a 作者: guofeng
...@@ -69,6 +69,7 @@ import com.huazheng.project.greenplum.source.mssql.SampleClosingProcessSource; ...@@ -69,6 +69,7 @@ import com.huazheng.project.greenplum.source.mssql.SampleClosingProcessSource;
import com.huazheng.project.greenplum.source.mssql2.SysSAPreturnNoSource; import com.huazheng.project.greenplum.source.mssql2.SysSAPreturnNoSource;
import com.huazheng.project.greenplum.source.mssql2.TKeHuSource; import com.huazheng.project.greenplum.source.mssql2.TKeHuSource;
import com.huazheng.project.greenplum.source.mssql2.TKeHuXiaoShouZZYeWuYSource; import com.huazheng.project.greenplum.source.mssql2.TKeHuXiaoShouZZYeWuYSource;
import com.huazheng.project.greenplum.source.mssql2.TShuJuHzddmxSource;
import com.huazheng.project.greenplum.source.mssql3.PersonCompSource; import com.huazheng.project.greenplum.source.mssql3.PersonCompSource;
import com.huazheng.project.greenplum.source.mssql4.TasksSource; import com.huazheng.project.greenplum.source.mssql4.TasksSource;
import com.huazheng.project.greenplum.source.mysql.HandoverSource; import com.huazheng.project.greenplum.source.mysql.HandoverSource;
...@@ -131,6 +132,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo; ...@@ -131,6 +132,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql2.model.TWuLiaoDB; import com.huazheng.project.mssql2.model.TWuLiaoDB;
import com.huazheng.project.mssql3.model.PersonComp; import com.huazheng.project.mssql3.model.PersonComp;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
...@@ -248,6 +250,8 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del ...@@ -248,6 +250,8 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del
private static SalesInquiryProcessSource salesInquiryProcessSource; private static SalesInquiryProcessSource salesInquiryProcessSource;
private static SalesInquiryProcessMXSource salesInquiryProcessMXSource; private static SalesInquiryProcessMXSource salesInquiryProcessMXSource;
private static TShuJuHzddmxSource tShuJuHzddmxSource;
private static TransformHistoryNodeSource transformHistoryNodeSource; private static TransformHistoryNodeSource transformHistoryNodeSource;
private static TransformNewNodeSource transformNewNodeSource; private static TransformNewNodeSource transformNewNodeSource;
...@@ -320,6 +324,8 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del ...@@ -320,6 +324,8 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del
sampleClosingProcessSource = (SampleClosingProcessSource) context.getBean("sampleClosingProcessSource"); sampleClosingProcessSource = (SampleClosingProcessSource) context.getBean("sampleClosingProcessSource");
sampleClosingProcessMingXiSource = (SampleClosingProcessMingXiSource) context.getBean("sampleClosingProcessMingXiSource"); sampleClosingProcessMingXiSource = (SampleClosingProcessMingXiSource) context.getBean("sampleClosingProcessMingXiSource");
salesInquiryProcessSource = (SalesInquiryProcessSource) context.getBean("salesInquiryProcessSource"); salesInquiryProcessSource = (SalesInquiryProcessSource) context.getBean("salesInquiryProcessSource");
tShuJuHzddmxSource = (TShuJuHzddmxSource) context.getBean("TShuJuHzddmxSource");
salesInquiryProcessMXSource = (SalesInquiryProcessMXSource) context.getBean("salesInquiryProcessMXSource"); salesInquiryProcessMXSource = (SalesInquiryProcessMXSource) context.getBean("salesInquiryProcessMXSource");
transformHistoryNodeSource = (TransformHistoryNodeSource) context.getBean("transformHistoryNodeSource"); transformHistoryNodeSource = (TransformHistoryNodeSource) context.getBean("transformHistoryNodeSource");
...@@ -401,6 +407,19 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del ...@@ -401,6 +407,19 @@ redis-cli -n 1 --raw keys "huazheng*ikp*" | xargs redis-cli -n 1 del
} }
}).setParallelism(1).name("拉取SampleApplicationProcess数据").addSink(greenPlumRichSinkFunction).setParallelism(1).name("输出SampleApplicationProcess数据"); }).setParallelism(1).name("拉取SampleApplicationProcess数据").addSink(greenPlumRichSinkFunction).setParallelism(1).name("输出SampleApplicationProcess数据");
// ================= TShuJuHzddmxSource 队列 =================
DataStream<String> salesShuJuHzddmxSourceRedis = env.addSource(tShuJuHzddmxSource).setParallelism(1).name("输入tShuJuHzddmxSource队列");
// 数据处理
salesShuJuHzddmxSourceRedis.flatMap(new FlatMapFunction<String, TShuJuHzddmx>() {
private static final long serialVersionUID = 1L;
@Override
public void flatMap(String value, Collector<TShuJuHzddmx> out) throws Exception {
gpserviceImpl.processTShuJuHzddmx(value, out);
}
}).setParallelism(1).name("拉取TShuJuHzddmx数据").addSink(greenPlumRichSinkFunction).setParallelism(1).name("输出TShuJuHzddmx数据");
// ================= SalesInquiryProcessSource 队列 ================= // ================= SalesInquiryProcessSource 队列 =================
DataStream<String> salesInquiryProcessSourceRedis = env.addSource(salesInquiryProcessSource).setParallelism(1).name("输入SalesInquiryProcessSource队列"); DataStream<String> salesInquiryProcessSourceRedis = env.addSource(salesInquiryProcessSource).setParallelism(1).name("输入SalesInquiryProcessSource队列");
......
...@@ -66,6 +66,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo; ...@@ -66,6 +66,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql2.model.TWuLiaoDB; import com.huazheng.project.mssql2.model.TWuLiaoDB;
import com.huazheng.project.mssql3.model.PersonComp; import com.huazheng.project.mssql3.model.PersonComp;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
...@@ -232,6 +233,7 @@ public interface GPMapper { ...@@ -232,6 +233,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectLikp'+':'+#p0.vbeln+','+#p0.mandt") @CacheEvict(key = "'selectLikp'+':'+#p0.vbeln+','+#p0.mandt")
public void updateLikp(Likp element); public void updateLikp(Likp element);
public List<Likp> selectLikpCheck(Likp build); public List<Likp> selectLikpCheck(Likp build);
public Long selectLikpMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr", unless="#result == null") @Cacheable(key = "#root.method.name+':'+#p0.mandt+','+#p0.bukrs+','+#p0.belnr+','+#p0.gjahr", unless="#result == null")
public Bkpf selectBkpf(Bkpf bkpf); // 查询替代删除 public Bkpf selectBkpf(Bkpf bkpf); // 查询替代删除
...@@ -341,6 +343,7 @@ public interface GPMapper { ...@@ -341,6 +343,7 @@ public interface GPMapper {
@CacheEvict(key = "'selectVbep'+':'+#p0.vbeln+','+#p0.posnr+','+#p0.etenr+','+#p0.mandt") @CacheEvict(key = "'selectVbep'+':'+#p0.vbeln+','+#p0.posnr+','+#p0.etenr+','+#p0.mandt")
public void deleteVbep(Vbep vbep); public void deleteVbep(Vbep vbep);
public List<Vbep> selectVbepCheck(Vbep build); public List<Vbep> selectVbepCheck(Vbep build);
public Long selectVbepMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.vbeln+','+#p0.posnr+','+#p0.mandt+','+#p0.parvw", unless="#result == null") @Cacheable(key = "#root.method.name+':'+#p0.vbeln+','+#p0.posnr+','+#p0.mandt+','+#p0.parvw", unless="#result == null")
public Vbpa selectVbpa(Vbpa vbpa); // 查询替代删除 public Vbpa selectVbpa(Vbpa vbpa); // 查询替代删除
...@@ -696,6 +699,16 @@ public interface GPMapper { ...@@ -696,6 +699,16 @@ public interface GPMapper {
public List<SampleClosingProcessMingXi> selectSampleClosingProcessMingXiCheck(SampleClosingProcessMingXi build); public List<SampleClosingProcessMingXi> selectSampleClosingProcessMingXiCheck(SampleClosingProcessMingXi build);
public Long selectSampleClosingProcessMingXiMaxRowNum(); public Long selectSampleClosingProcessMingXiMaxRowNum();
@Cacheable(key = "#root.method.name+':'+#p0.id", unless="#result == null")
public TShuJuHzddmx selectTShuJuHzddmx(TShuJuHzddmx sfp); // 查询替代删除
public void insertTShuJuHzddmx(TShuJuHzddmx element);
@CacheEvict(key = "'selectTShuJuHzddmx'+':'+#p0.id")
public void updateTShuJuHzddmx(TShuJuHzddmx element); // 配合redis中的reset标签进行更新
@CacheEvict(key = "'selectTShuJuHzddmx'+':'+#p0.id")
public void deleteTShuJuHzddmx(TShuJuHzddmx item);
public List<TShuJuHzddmx> selectTShuJuHzddmxCheck(TShuJuHzddmx build);
public Long selectTShuJuHzddmxMaxRowNum();
......
...@@ -51,6 +51,7 @@ import com.huazheng.project.mssql.model.SampleClosingProcess; ...@@ -51,6 +51,7 @@ import com.huazheng.project.mssql.model.SampleClosingProcess;
import com.huazheng.project.mssql.model.SampleClosingProcessMingXi; 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.TShuJuHzddmx;
import com.huazheng.project.mssql4.mapper.UltimusDBMapper; import com.huazheng.project.mssql4.mapper.UltimusDBMapper;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
import com.huazheng.project.mysql.mapper.TmsMapper; import com.huazheng.project.mysql.mapper.TmsMapper;
...@@ -108,6 +109,7 @@ public class CheckDeleteServiceImpl { ...@@ -108,6 +109,7 @@ public class CheckDeleteServiceImpl {
selectTransformHistoryNodeCheckByDelete(); selectTransformHistoryNodeCheckByDelete();
selectTransformNewNodeCheckByDelete(); selectTransformNewNodeCheckByDelete();
selectSalesForecastProcessMXCheckByDelete(); selectSalesForecastProcessMXCheckByDelete();
} }
public void selectAufkCheckByDelete() { public void selectAufkCheckByDelete() {
...@@ -989,6 +991,37 @@ public class CheckDeleteServiceImpl { ...@@ -989,6 +991,37 @@ public class CheckDeleteServiceImpl {
redis1Template.opsForValue().set("huazheng:checkDeleteError:SalesInquiryProcess:rowNum", SomeUtils.getErrorInfoFromException(e)); redis1Template.opsForValue().set("huazheng:checkDeleteError:SalesInquiryProcess:rowNum", SomeUtils.getErrorInfoFromException(e));
} }
} }
public void selectTShuJuHzddmxCheckByDelete() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:checkDelete:TShuJuHzddmx:rowNum", "0");
String rowNum = opsForValue.get("huazheng:checkDelete:TShuJuHzddmx:rowNum");
TShuJuHzddmx build = TShuJuHzddmx.builder().rowNum(rowNum).build();
List<TShuJuHzddmx> list = gpMapper.selectTShuJuHzddmxCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
redis1Template.opsForValue().set("huazheng:checkDelete:TShuJuHzddmx:rowNum", "0"); // 计数器复位
ThreadUtil.sleep(1000); // 没有数据了,休眠一下
}
list.forEach(target -> { // 遍历要检查的数据
TShuJuHzddmx source = hzcrmMapper.selectTShuJuHzddmxById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteTShuJuHzddmx(target); // 删除数仓中的数据
operator = "delete";
}
redis1Template.opsForValue().set("huazheng:checkDelete:TShuJuHzddmx:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectTShuJuHzddmxcheckDelete --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkDeleteError:TShuJuHzddmx:rowNum", SomeUtils.getErrorInfoFromException(e));
}
}
public void selectSampleClosingProcessCheckByDelete() { public void selectSampleClosingProcessCheckByDelete() {
try { try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue(); ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
......
...@@ -59,6 +59,7 @@ import com.huazheng.project.mssql.model.SampleClosingProcess; ...@@ -59,6 +59,7 @@ import com.huazheng.project.mssql.model.SampleClosingProcess;
import com.huazheng.project.mssql.model.SampleClosingProcessMingXi; 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.TShuJuHzddmx;
import com.huazheng.project.mssql4.mapper.UltimusDBMapper; import com.huazheng.project.mssql4.mapper.UltimusDBMapper;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
import com.huazheng.project.mysql.mapper.TmsMapper; import com.huazheng.project.mysql.mapper.TmsMapper;
...@@ -2102,6 +2103,53 @@ public class CheckUpdateServiceImpl { ...@@ -2102,6 +2103,53 @@ public class CheckUpdateServiceImpl {
} }
} }
public void selectTShuJuHzddmxCheckUpdate() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:checkUpdate:TShuJuHzddmx:rowids", "0");
String rowids = opsForValue.get("huazheng:checkUpdate:TShuJuHzddmx:rowids");
TShuJuHzddmx build = TShuJuHzddmx.builder().id(Integer.valueOf(rowids)).build();
List<TShuJuHzddmx> slist = hzcrmMapper.selectTShuJuHzddmxCheckByUpdate(build); // 从数仓中查询一组数据
if (slist.size() == 0) {
redis1Template.opsForValue().set("huazheng:checkUpdate:TShuJuHzddmx:rowids", "0"); // 计数器复位
ThreadUtil.sleep(1000); // 没有数据了,休眠一下
}
slist.forEach(source -> { // 遍历要检查的数据
TShuJuHzddmx target = gpMapper.selectTShuJuHzddmx(source); // 根据主键查询源库中的数据
String operator = "none";
Integer srowids = source.getId();
if (target != null) {
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.updateTShuJuHzddmx(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:checkUpdate:TShuJuHzddmx:rowids", srowids.toString());
if (!operator.equals("none")) {
log.info(String.format("selectTShuJuHzddmxcheckUpdate --> rowids:%s, operator:%s", srowids.toString(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkUpdateError:TShuJuHzddmx:rowids", SomeUtils.getErrorInfoFromException(e));
}
}
public void selectSampleClosingProcessCheckUpdate() { public void selectSampleClosingProcessCheckUpdate() {
try { try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue(); ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
......
...@@ -20,6 +20,7 @@ import com.huazheng.project.hana.model.Afvc; ...@@ -20,6 +20,7 @@ import com.huazheng.project.hana.model.Afvc;
import com.huazheng.project.hana.model.Aufm; import com.huazheng.project.hana.model.Aufm;
import com.huazheng.project.hana.model.Knkk; import com.huazheng.project.hana.model.Knkk;
import com.huazheng.project.hana.model.Knvp; import com.huazheng.project.hana.model.Knvp;
import com.huazheng.project.hana.model.Likp;
import com.huazheng.project.hana.model.Mkpf; import com.huazheng.project.hana.model.Mkpf;
import com.huazheng.project.hana.model.Mseg; import com.huazheng.project.hana.model.Mseg;
import com.huazheng.project.hana.model.Mska; import com.huazheng.project.hana.model.Mska;
...@@ -31,6 +32,7 @@ import com.huazheng.project.hana.model.Tspat; ...@@ -31,6 +32,7 @@ import com.huazheng.project.hana.model.Tspat;
import com.huazheng.project.hana.model.Tvkbt; 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.hana.model.Vbep;
import com.huazheng.project.hana.model.Zsd06; import com.huazheng.project.hana.model.Zsd06;
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.SalesContractProcessMX;
...@@ -43,6 +45,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo; ...@@ -43,6 +45,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql2.model.TWuLiaoDB; import com.huazheng.project.mssql2.model.TWuLiaoDB;
import com.huazheng.project.mssql3.mapper.Cinderellaw2Mapper; import com.huazheng.project.mssql3.mapper.Cinderellaw2Mapper;
import com.huazheng.project.mssql3.model.PersonComp; import com.huazheng.project.mssql3.model.PersonComp;
...@@ -1658,4 +1661,193 @@ public class DeleteUpdateJobServiceImpl { ...@@ -1658,4 +1661,193 @@ public class DeleteUpdateJobServiceImpl {
} }
} }
public void selectVbepCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:Vbep:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:Vbep:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:Vbep:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectVbepMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:Vbep:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:Vbep:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectVbepCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
Vbep build = Vbep.builder().rowNum(rowNum).build();
List<Vbep> list = gpMapper.selectVbepCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectVbepCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
Vbep source = sapMapper.selectVbepById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteVbep(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);
// ===============================
if (source.getEdatu() != null) {
String erdat2 = new StringBuffer(source.getEdatu()).insert(4, "-").insert(7, "-").toString();
Date date = DateUtil.parse(erdat2);
source.setEdatu1(date);
}
// ===============================
while (true) {
try {
gpMapper.updateVbep(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:Vbep:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectVbepCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:Vbep:rowNum", getErrorInfoFromException(e));
}
}
public void selectLikpCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:Likp:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:Likp:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:Likp:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectLikpMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:Likp:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:Likp:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectLikpCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
Likp build = Likp.builder().rowNum(rowNum).build();
List<Likp> list = gpMapper.selectLikpCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectLikpCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
Likp source = sapMapper.selectLikpById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteLikp(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);
// ===============================
String wadat_ist = source.getWadat_ist();
String lfuhr = source.getLfuhr();
if ("00000000".equals(wadat_ist)) {
source.setWadat_ist2lfuhr(null);
} else {
Date date = DateUtil.parse(wadat_ist + lfuhr, "yyyyMMddHHmmss");
source.setWadat_ist2lfuhr(date);
}
source.setErdat1(SomeUtils.caDate(source.getErdat())); // 日期00000000格式转换,已处理异常
source.setWadat_ist1(SomeUtils.caDate(source.getWadat_ist())); // 日期00000000格式转换,已处理异常
// ===============================
while (true) {
try {
gpMapper.updateLikp(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:Likp:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectLikpCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:Likp:rowNum", getErrorInfoFromException(e));
}
}
public void selectTShuJuHzddmxCheck() {
try {
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:check:TShuJuHzddmx:rowNum", "0");
String rowNum = opsForValue.get("huazheng:check:TShuJuHzddmx:rowNum");
// 一次性任务的终止位
if (redis1Template.hasKey("huazheng:check:TShuJuHzddmx:stopNum") == false) {
// 查询最大计数器
String maxRowNum = gpMapper.selectTShuJuHzddmxMaxRowNum().toString();
opsForValue.setIfAbsent("huazheng:check:TShuJuHzddmx:stopNum", maxRowNum);
}
Long stopNum = Long.parseLong(opsForValue.get("huazheng:check:TShuJuHzddmx:stopNum"));
if (stopNum < Long.parseLong(rowNum)) {
JobKey jobKey = JobKey.jobKey("selectTShuJuHzddmxCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
TShuJuHzddmx build = TShuJuHzddmx.builder().rowNum(rowNum).build();
List<TShuJuHzddmx> list = gpMapper.selectTShuJuHzddmxCheck(build); // 从数仓中查询一组数据
if (list.size() == 0) {
JobKey jobKey = JobKey.jobKey("selectTShuJuHzddmxCheck_once", "DEFAULT"); // 删除任务
quartzScheduler.deleteJob(jobKey);
return;
}
list.forEach(target -> { // 遍历要检查的数据
TShuJuHzddmx source = hzcrmMapper.selectTShuJuHzddmxById(target); // 根据主键查询源库中的数据
String operator = "none";
if (source == null) { // 如果源库中没有数据
gpMapper.deleteTShuJuHzddmx(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.updateTShuJuHzddmx(source); // 更新数据到数仓中
break;
} catch (RuntimeException e) {
log.error(e.getMessage());ThreadUtil.safeSleep(500);
}
}
ThreadUtil.safeSleep(500);
}
}
redis1Template.opsForValue().set("huazheng:check:TShuJuHzddmx:rowNum", target.getRowNum());
if (!operator.equals("none")) {
log.info(String.format("selectTShuJuHzddmxCheck --> rowNum:%s, operator:%s", target.getRowNum(), operator));
}
});
} catch (Exception e) {
redis1Template.opsForValue().set("huazheng:checkError:TShuJuHzddmx:rowNum", getErrorInfoFromException(e));
}
}
} }
...@@ -71,6 +71,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo; ...@@ -71,6 +71,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql2.model.TWuLiaoDB; import com.huazheng.project.mssql2.model.TWuLiaoDB;
import com.huazheng.project.mssql3.model.PersonComp; import com.huazheng.project.mssql3.model.PersonComp;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
...@@ -419,6 +420,35 @@ public class GPServiceImpl { ...@@ -419,6 +420,35 @@ public class GPServiceImpl {
} }
} }
public void processTShuJuHzddmx(String value, Collector<TShuJuHzddmx> arg2) {
try {
TShuJuHzddmx data = JSONUtil.toBean(value, TShuJuHzddmx.class);
TShuJuHzddmx exist = gpMapper.selectTShuJuHzddmx(data);
if (exist != null) {
data.setExist(true); // 已经在库
}
arg2.collect(data);
} catch (Exception e) {
redis1Template.opsForHash().put("huazheng:TShuJuHzddmx:error", "processTShuJuHzddmx", getErrorInfoFromException(e));
log.error(e.getMessage());
}
}
public void sinkTShuJuHzddmx(TShuJuHzddmx element) {
try {
if (element.isExist() == false) {
log.debug("GPServiceImpl.sinkTShuJuHzddmx()");
gpMapper.insertTShuJuHzddmx(element);
}
} catch (RuntimeException e) {
redis1Template.opsForHash().put("huazheng:TShuJuHzddmx:error", "sinkTShuJuHzddmx", getErrorInfoFromException(e));
log.error(e.getMessage());
} catch (Exception e) {
redis1Template.opsForHash().put("huazheng:TShuJuHzddmx:error", "sinkTShuJuHzddmx", getErrorInfoFromException(e));
log.error(e.getMessage());
}
}
public void processSampleApplicationProcess(String value, Collector<SampleApplicationProcess> arg2) { public void processSampleApplicationProcess(String value, Collector<SampleApplicationProcess> arg2) {
try { try {
SampleApplicationProcess data = JSONUtil.toBean(value, SampleApplicationProcess.class); SampleApplicationProcess data = JSONUtil.toBean(value, SampleApplicationProcess.class);
......
...@@ -71,6 +71,7 @@ import com.huazheng.project.mssql2.mapper.HzcrmMapper; ...@@ -71,6 +71,7 @@ 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;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql4.mapper.UltimusDBMapper; import com.huazheng.project.mssql4.mapper.UltimusDBMapper;
import com.huazheng.project.mssql4.model.Tasks; import com.huazheng.project.mssql4.model.Tasks;
import com.huazheng.project.mysql.mapper.TmsMapper; import com.huazheng.project.mysql.mapper.TmsMapper;
...@@ -1336,6 +1337,32 @@ public class JobServiceImpl { ...@@ -1336,6 +1337,32 @@ public class JobServiceImpl {
} }
} }
public void selectTShuJuHzddmxNew() {
DefaultRedisScript<String> script = new DefaultRedisScript<String>();
script.setResultType(String.class);
script.setScriptSource(new ResourceScriptSource(new ClassPathResource("luascript/vbap4send.lua")));
List<String> keys = Arrays.asList("huazheng:TShuJuHzddmx:sendcount", "huazheng:TShuJuHzddmx:rowids", "huazheng:list:TShuJuHzddmx");
ValueOperations<String, String> opsForValue = redis1Template.opsForValue();
opsForValue.setIfAbsent("huazheng:TShuJuHzddmx:sendcount", "0"); // 不存在则创建,存在则么有操作
opsForValue.setIfAbsent("huazheng:TShuJuHzddmx:receivecount", "0"); // 不存在则创建,存在则么有操作
opsForValue.setIfAbsent("huazheng:TShuJuHzddmx:rowids", "0"); // 不存在则创建,存在则么有操作
Long sendcount = Long.valueOf(opsForValue.get("huazheng:TShuJuHzddmx:sendcount"));
Long receivecount = Long.valueOf(opsForValue.get("huazheng:TShuJuHzddmx:receivecount"));
if (sendcount - receivecount <= 20) { // 如果发送数和消费数的差小于5则往队列中写数据
String rowids = opsForValue.get("huazheng:TShuJuHzddmx:rowids"); // 标记id
TShuJuHzddmx scp = TShuJuHzddmx.builder().rowids(Long.valueOf(rowids)).build();
List<TShuJuHzddmx> list = hzcrmMapper.selectTShuJuHzddmxNew(scp);
if (!list.isEmpty()) {
list.forEach(item -> {
JSONObject json = JSONUtil.parseObj(item, false);
String execute = redis1Template.execute(script, keys, item.getRowids().toString(), json.toString());
log.info("标记时间回写 --> " + execute);
});
}
}
}
public void selectSalesInquiryProcessMXNew() { public void selectSalesInquiryProcessMXNew() {
DefaultRedisScript<String> script = new DefaultRedisScript<String>(); DefaultRedisScript<String> script = new DefaultRedisScript<String>();
script.setResultType(String.class); script.setResultType(String.class);
......
package com.huazheng.project.greenplum.source.mssql2;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;
import org.springframework.stereotype.Service;
import com.huazheng.project.HZDataStream;
import cn.hutool.core.thread.ThreadUtil;
import lombok.extern.log4j.Log4j2;
@Log4j2
@Service
public class TShuJuHzddmxSource implements SourceFunction<String> {
private static final long serialVersionUID = 1L;
public String getErrorInfoFromException(Exception e) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "\r\n" + sw.toString() + "\r\n";
} catch (Exception e2) {
return "bad getErrorInfoFromException";
}
}
@Override
public void run(SourceContext<String> ctx) throws Exception {
DefaultRedisScript<String> script = new DefaultRedisScript<String>();
script.setResultType(String.class);
script.setScriptSource(new ResourceScriptSource(new ClassPathResource("luascript/vbap.lua")));
List<String> keys = Arrays.asList("huazheng:TShuJuHzddmx:sendcount", "huazheng:TShuJuHzddmx:flagDate", "huazheng:list:TShuJuHzddmx", "huazheng:TShuJuHzddmx:receivecount");
while (true) {
try {
String value = HZDataStream.redis1Template.execute(script, keys, "");
String[] values = value.toString().split("==========");
String checkString = values[0];
String[] split = checkString.split(", ");
boolean check = split[0].split(":")[1].equals(split[1].split(":")[1]);
if (values.length > 1) { // 有数据字符串
// log.info(msg + " " + value.toString() + " " + check);
log.info(checkString + " " + check);
ctx.collect(values[1]);
} else { // 没有数据字符串
ThreadUtil.sleep(1000); // 没有数据了,休眠一下
}
} catch (Exception e) {
HZDataStream.redis1Template.opsForHash().put("huazheng:TShuJuHzddmx:error", "receivecount_elseerror", getErrorInfoFromException(e));
}
}
}
@Override
public void cancel() {
}
}
...@@ -26,6 +26,7 @@ public class SampleClosingProcessMingXi implements Serializable { ...@@ -26,6 +26,7 @@ public class SampleClosingProcessMingXi implements Serializable {
private String shiFouTGv ; // 样品结果(数字值) private String shiFouTGv ; // 样品结果(数字值)
private String shiFouTGt ; // 样品结果(文本值) private String shiFouTGt ; // 样品结果(文本值)
private String hangxiangmh; // 行项目号 private String hangxiangmh; // 行项目号
private String shuliang; // 数量
private boolean exist; // 用于标记,不是字段 private boolean exist; // 用于标记,不是字段
private String hashResult; // 数据hash标记 private String hashResult; // 数据hash标记
......
...@@ -7,6 +7,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo; ...@@ -7,6 +7,7 @@ import com.huazheng.project.mssql2.model.SysSAPreturnNo;
import com.huazheng.project.mssql2.model.TKeHu; import com.huazheng.project.mssql2.model.TKeHu;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZ;
import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY; import com.huazheng.project.mssql2.model.TKeHuXiaoShouZZYeWuY;
import com.huazheng.project.mssql2.model.TShuJuHzddmx;
import com.huazheng.project.mssql2.model.TWuLiaoDB; import com.huazheng.project.mssql2.model.TWuLiaoDB;
public interface HzcrmMapper { public interface HzcrmMapper {
...@@ -14,11 +15,15 @@ public interface HzcrmMapper { ...@@ -14,11 +15,15 @@ public interface HzcrmMapper {
public List<TKeHuXiaoShouZZYeWuY> selectTKeHuXiaoShouZZYeWuYNew(TKeHuXiaoShouZZYeWuY tkeHuXiaoShouZZYeWuY); public List<TKeHuXiaoShouZZYeWuY> selectTKeHuXiaoShouZZYeWuYNew(TKeHuXiaoShouZZYeWuY tkeHuXiaoShouZZYeWuY);
public List<TKeHu> selectTKeHuNew(TKeHu tkeHu); public List<TKeHu> selectTKeHuNew(TKeHu tkeHu);
public List<SysSAPreturnNo> selectSysSAPreturnNoNew(SysSAPreturnNo sysSAPreturnNo); public List<SysSAPreturnNo> selectSysSAPreturnNoNew(SysSAPreturnNo sysSAPreturnNo);
public List<TShuJuHzddmx> selectTShuJuHzddmxNew(TShuJuHzddmx tShuJuHzddmx);
public List<TKeHuXiaoShouZZ> selectTKeHuXiaoShouZZ(TKeHu tkeHu); public List<TKeHuXiaoShouZZ> selectTKeHuXiaoShouZZ(TKeHu tkeHu);
public List<TKeHuXiaoShouZZYeWuY> selectTKeHuXiaoShouZZYeWuY(TKeHu tkeHu); public List<TKeHuXiaoShouZZYeWuY> selectTKeHuXiaoShouZZYeWuY(TKeHu tkeHu);
public List<TWuLiaoDB> selectTWuLiaoDB(TKeHu tkeHu); public List<TWuLiaoDB> selectTWuLiaoDB(TKeHu tkeHu);
public List<TShuJuHzddmx> selectTShuJuHzddmxCheckByUpdate(TShuJuHzddmx sip);
public TShuJuHzddmx selectTShuJuHzddmxById(TShuJuHzddmx target);
public SysSAPreturnNo selectSysSAPreturnNoById(SysSAPreturnNo target); public SysSAPreturnNo selectSysSAPreturnNoById(SysSAPreturnNo target);
public TKeHu selectTKeHuById(TKeHu target); public TKeHu selectTKeHuById(TKeHu target);
public TKeHuXiaoShouZZ selectTKeHuXiaoShouZZById(TKeHuXiaoShouZZ target); public TKeHuXiaoShouZZ selectTKeHuXiaoShouZZById(TKeHuXiaoShouZZ target);
......
package com.huazheng.project.mssql2.model;
import java.io.Serializable;
import org.springframework.format.annotation.DateTimeFormat;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 销售订单主表明细
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Builder
public class TShuJuHzddmx implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id; // 主键
private String DingDan; // 销售订单
private String HangXiangM; // 行项目
private String DanJia; // 单价
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") // 页面写入数据库时格式化
@JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化
private String ChuangJianSJ; // 创建时间
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") // 页面写入数据库时格式化
@JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化
private String GengXinSJ; // 更新时间
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") // 页面写入数据库时格式化
@JSONField(format="yyyy-MM-dd HH:mm:ss") // 数据库导出页面时json格式化
private String ShanChuSJ; // 删除时间
private String DingDanSL; //订单数量
private String WuLiaoBM; //物料编码
private String WuLiaoMS; //物料描述
private Long rowids; // sap那边的rowid
private boolean exist; // 用于标记,不是字段
private String hashResult; // 数据hash标记
private String rowNum; // 用于标记,不是字段
}
...@@ -14,7 +14,7 @@ hana_mandt=and mandt is not null ...@@ -14,7 +14,7 @@ hana_mandt=and mandt is not null
druid.hana.driverClassName: com.sap.db.jdbc.Driver druid.hana.driverClassName: com.sap.db.jdbc.Driver
druid.hana.url: jdbc:sap://192.168.80.68:38015?databaseName=HD1&zeroDateTimeBehavior=convertToNull druid.hana.url: jdbc:sap://192.168.80.68:38015?databaseName=HD1&zeroDateTimeBehavior=convertToNull
druid.hana.username: SAPBW druid.hana.username: SAPBW
druid.hana.password: Pass@12345 druid.hana.password: Pass@123456
druid.hana.validationQuery: select 'hello world' from dummy druid.hana.validationQuery: select 'hello world' from dummy
druid.hana.initialSize: 5 druid.hana.initialSize: 5
druid.hana.minIdle: 10 druid.hana.minIdle: 10
......
...@@ -11,3 +11,4 @@ PRIMARY KEY (id) ...@@ -11,3 +11,4 @@ PRIMARY KEY (id)
Distributed by (id); Distributed by (id);
alter table SampleClosingProcessMingXi add column hangxiangmh text; alter table SampleClosingProcessMingXi add column hangxiangmh text;
alter table SampleClosingProcessMingXi add column shuliang text;
\ No newline at end of file
drop table TShuJuHZDDMX;
CREATE TABLE TShuJuHZDDMX (
ID integer,
DingDan text,
HangXiangM text,
DanJia text,
ChuangJianSJ timestamp,
GengXinSJ timestamp,
ShanChuSJ timestamp,
PRIMARY KEY (id)
)
Distributed by (id);
alter table TShuJuHZDDMX add column hashResult text;
alter table TShuJuHZDDMX add column rowNum serial;
alter table TShuJuHZDDMX add column DingDanSL text;
alter table TShuJuHZDDMX add column WuLiaoBM text;
alter table TShuJuHZDDMX add column WuLiaoMS text;
...@@ -418,6 +418,30 @@ ...@@ -418,6 +418,30 @@
select max(rowNum) from SampleClosingProcess select max(rowNum) from SampleClosingProcess
</select> </select>
<select id="selectTShuJuHzddmx" parameterType="com.huazheng.project.mssql2.model.TShuJuHzddmx" resultType="com.huazheng.project.mssql2.model.TShuJuHzddmx">
select * from TShuJuHzddmx where id = #{id}
</select>
<insert id="insertTShuJuHzddmx" parameterType="com.huazheng.project.mssql2.model.TShuJuHzddmx">
insert into TShuJuHzddmx (id,DingDan,HangXiangM,DanJia,ChuangJianSJ,GengXinSJ,ShanChuSJ,DingDanSL,WuLiaoBM,WuLiaoMS,hashResult)
values(#{id},#{DingDan},#{HangXiangM},#{DanJia},#{ChuangJianSJ},#{GengXinSJ},#{ShanChuSJ},#{DingDanSL},#{WuLiaoBM},#{WuLiaoMS},#{hashResult})
</insert>
<delete id="deleteTShuJuHzddmx" parameterType="com.huazheng.project.mssql2.model.TShuJuHzddmx">
delete from TShuJuHzddmx where id = #{id}
</delete>
<update id="updateTShuJuHzddmx" parameterType="com.huazheng.project.mssql2.model.TShuJuHzddmx">
update TShuJuHzddmx set
DingDan=#{DingDan},HangXiangM=#{HangXiangM},DanJia=#{DanJia},
ChuangJianSJ=#{ChuangJianSJ},GengXinSJ=#{GengXinSJ},ShanChuSJ=#{ShanChuSJ},DingDanSL=#{DingDanSL},WuLiaoBM=#{WuLiaoBM},WuLiaoMS=#{WuLiaoMS},hashResult=#{hashResult}
where id = #{id}
</update>
<select id="selectTShuJuHzddmxCheck" parameterType="com.huazheng.project.mssql2.model.TShuJuHzddmx" resultType="com.huazheng.project.mssql2.model.TShuJuHzddmx">
select * from TShuJuHzddmx where rownum &gt; #{rowNum} order by rownum limit 20
</select>
<select id="selectTShuJuHzddmxMaxRowNum" resultType="long">
select max(rowNum) from TShuJuHzddmx
</select>
...@@ -428,15 +452,15 @@ ...@@ -428,15 +452,15 @@
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,hangxiangmh,hashResult) insert into SampleClosingProcessMingXi (id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh,shuliang,hashResult)
values(#{id},#{sYS_INCIDENT},#{shiFouTGv},#{shiFouTGt},#{hangxiangmh},#{hashResult}) values(#{id},#{sYS_INCIDENT},#{shiFouTGv},#{shiFouTGt},#{hangxiangmh},#{shuliang},#{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},hangxiangmh=#{hangxiangmh},hashResult=#{hashResult} sYS_INCIDENT=#{sYS_INCIDENT},shiFouTGv=#{shiFouTGv},shiFouTGt=#{shiFouTGt},hangxiangmh=#{hangxiangmh},shuliang=#{shuliang},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">
...@@ -888,6 +912,10 @@ ...@@ -888,6 +912,10 @@
<select id="selectLikpCheck" parameterType="com.huazheng.project.hana.model.Likp" resultType="com.huazheng.project.hana.model.Likp"> <select id="selectLikpCheck" parameterType="com.huazheng.project.hana.model.Likp" resultType="com.huazheng.project.hana.model.Likp">
select * from Likp where rownum &gt; #{rowNum} order by rownum limit 20 select * from Likp where rownum &gt; #{rowNum} order by rownum limit 20
</select> </select>
<select id="selectLikpMaxRowNum" resultType="long">
select max(rowNum) from Likp
</select>
<select id="selectBkpf" parameterType="com.huazheng.project.hana.model.Bkpf" resultType="com.huazheng.project.hana.model.Bkpf"> <select id="selectBkpf" parameterType="com.huazheng.project.hana.model.Bkpf" resultType="com.huazheng.project.hana.model.Bkpf">
select * from Bkpf where mandt = #{mandt} and bukrs = #{bukrs} and belnr = #{belnr} and gjahr = #{gjahr} select * from Bkpf where mandt = #{mandt} and bukrs = #{bukrs} and belnr = #{belnr} and gjahr = #{gjahr}
...@@ -1174,6 +1202,10 @@ ...@@ -1174,6 +1202,10 @@
<select id="selectVbepCheck" parameterType="com.huazheng.project.hana.model.Vbep" resultType="com.huazheng.project.hana.model.Vbep"> <select id="selectVbepCheck" parameterType="com.huazheng.project.hana.model.Vbep" resultType="com.huazheng.project.hana.model.Vbep">
select * from Vbep where rownum &gt; #{rowNum} order by rownum limit 20 select * from Vbep where rownum &gt; #{rowNum} order by rownum limit 20
</select> </select>
<select id="selectVbepMaxRowNum" resultType="long">
select max(rowNum) from Vbep
</select>
<select id="selectVbpa" parameterType="com.huazheng.project.hana.model.Vbpa" resultType="com.huazheng.project.hana.model.Vbpa"> <select id="selectVbpa" parameterType="com.huazheng.project.hana.model.Vbpa" resultType="com.huazheng.project.hana.model.Vbpa">
select * from Vbpa select * from Vbpa
......
...@@ -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,hangxiangmh id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh,shuliang
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,hangxiangmh id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh,shuliang
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,hangxiangmh select id,sYS_INCIDENT,shiFouTGv,shiFouTGt,hangxiangmh,shuliang
from "Biz_样品结案流程_MingXi" from "Biz_样品结案流程_MingXi"
where id = #{id} where id = #{id}
</select> </select>
......
...@@ -24,6 +24,25 @@ ...@@ -24,6 +24,25 @@
) a where a.rowids &gt; #{rowids} ) a where a.rowids &gt; #{rowids}
</select> </select>
<select id="selectTShuJuHzddmxNew" parameterType="TShuJuHzddmx" resultType="TShuJuHzddmx">
select top 20 a.* from (
select id as rowids,
id,DingDan,HangXiangM,DanJia,ChuangJianSJ,GengXinSJ,ShanChuSJ,DingDanSL,WuLiaoBM,WuLiaoMS
from T_ShuJuHZDDMX
) a where a.rowids &gt; #{rowids}
</select>
<select id="selectTShuJuHzddmxCheckByUpdate" parameterType="TShuJuHzddmx" resultType="TShuJuHzddmx">
select top 20
id,DingDan,HangXiangM,DanJia,ChuangJianSJ,GengXinSJ,ShanChuSJ,DingDanSL,WuLiaoBM,WuLiaoMS
from T_ShuJuHZDDMX
where id &gt; #{id}
and GengXinSJ is not null and CONVERT(varchar(10),GengXinSJ,120) = CONVERT(varchar(10),GETDATE(),120)
</select>
<select id="selectTShuJuHzddmxById" parameterType="TShuJuHzddmx" resultType="TShuJuHzddmx">
select id,DingDan,HangXiangM,DanJia,ChuangJianSJ,GengXinSJ,ShanChuSJ,DingDanSL,WuLiaoBM,WuLiaoMS from T_ShuJuHZDDMX
where id = #{id}
</select>
......
...@@ -591,6 +591,17 @@ ...@@ -591,6 +591,17 @@
</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="targetObject" ref="jobServiceImpl" />
<property name="targetMethod" value="selectTShuJuHzddmxNew" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail"> <property name="jobDetail">
<bean parent="methodJobDetail"> <bean parent="methodJobDetail">
...@@ -1056,6 +1067,16 @@ ...@@ -1056,6 +1067,16 @@
<property name="jobDetail"> <property name="jobDetail">
<bean parent="methodJobDetail"> <bean parent="methodJobDetail">
<property name="targetObject" ref="checkUpdateServiceImpl" /> <property name="targetObject" ref="checkUpdateServiceImpl" />
<property name="targetMethod" value="selectTShuJuHzddmxCheckUpdate" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="targetObject" ref="checkUpdateServiceImpl" />
<property name="targetMethod" value="selectTasksCheckUpdate" /> <property name="targetMethod" value="selectTasksCheckUpdate" />
</bean> </bean>
</property> </property>
...@@ -1426,6 +1447,16 @@ ...@@ -1426,6 +1447,16 @@
<property name="jobDetail"> <property name="jobDetail">
<bean parent="methodJobDetail"> <bean parent="methodJobDetail">
<property name="targetObject" ref="checkDeleteServiceImpl" /> <property name="targetObject" ref="checkDeleteServiceImpl" />
<property name="targetMethod" value="selectTShuJuHzddmxCheckByDelete" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="targetObject" ref="checkDeleteServiceImpl" />
<property name="targetMethod" value="selectVbepCheckByDelete" /> <property name="targetMethod" value="selectVbepCheckByDelete" />
</bean> </bean>
</property> </property>
...@@ -1469,7 +1500,7 @@ ...@@ -1469,7 +1500,7 @@
<property name="cronExpression" value="* * * * * ?" /> <property name="cronExpression" value="* * * * * ?" />
</bean> </bean>
<!-- 以上77个任务 --> <!-- 以上80个任务 -->
...@@ -1604,6 +1635,36 @@ ...@@ -1604,6 +1635,36 @@
</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="selectVbepCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectVbepCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="name" value="selectLikpCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectLikpCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<bean parent="methodJobDetail">
<property name="name" value="selectTShuJuHzddmxCheck_once"/>
<property name="targetObject" ref="deleteUpdateJobServiceImpl" />
<property name="targetMethod" value="selectTShuJuHzddmxCheck" />
</bean>
</property>
<property name="cronExpression" value="* * * * * ?" />
</bean>
</list> </list>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论